__be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) { unsigned short _service_access_point; const unsigned short *sap; const struct ethhdr *eth; skb->dev = dev; /* 校正skb中mac头的指针 */ skb_reset_mac_header(skb); eth = (struct ethhdr *)skb->data; /* 将data...
线性数据长度: skb->head - skb->end。 实际线性数据长度:skb->data - skb->tail,不包含线性数据中的头空间和尾空间。 skb->data_len: skb中的分片数据(非线性数据)的长度。 skb->len: skb中的数据块的总长度,数据块包括实际线性数据和非线性数据,非线性数据为skb->data_len,所以skb->len= (skb->dat...
skb_reset_mac_header staticinlinevoidskb_reset_mac_header(structsk_buff *skb) {skb->mac_header = skb->data - skb->head;} skb_pull_inline(skb, ETH_HLEN); 移动data指针 void*skb_pull(structsk_buff *skb, unsignedintlen);staticinlinevoid*__skb_pull(structsk_buff *skb, unsignedintlen) ...
{ skb->network_header = skb->data - skb->head;} 这个一般是在skb_pull/skb_push后做的,重新复位sk_buf网络头部地址。
skb->head = data; skb->data = data; skb_reset_tail_pointer(skb); skb->end = skb->tail + size; kmemcheck_annotate_bitfield(skb, flags1); kmemcheck_annotate_bitfield(skb, flags2); #ifdef NET_SKBUFF_DATA_USES_OFFSET skb->mac_header = ~0U; ...
int headerlen = skb->data - skb->head; int expand = (skb->tail + skb->data_len) - skb->end; //如果此skb被共享 if (skb_shared(skb)) BUG();//产生BUG oops //还需要的内存大小 if (expand <= 0) expand = 0; //新申请的skb的大小 ...
data_len, mac_len, csum; __u32 priority; __u8 local_df:1, cloned:1, ip_summed:2, nohdr:1, nfctinfo:3; __u8 pkt_type:3, fclone:2; __be16 protocol; void (*destructor)(struct sk_buff *skb); /* These elements must be at the end, see alloc_skb() for details. */ ...
skb->head = data; skb->data = data; skb_reset_tail_pointer(skb); skb->end = skb->tail + size; kmemcheck_annotate_bitfield(skb, flags1); kmemcheck_annotate_bitfield(skb, flags2); #ifdef NET_SKBUFF_DATA_USES_OFFSET skb->mac_header = ~0U; ...
__copy_skb_header(nskb,head_skb); nskb->mac_len=head_skb->mac_len; skb_headers_offset_update(nskb,skb_headroom(nskb)-headroom); skb_copy_from_linear_data_offset(skb,-tnl_hlen, skb_copy_from_linear_data_offset(head_skb,-tnl_hlen, ...
len,data_len,mac_len,csum;__u32 priority;__u8 local_df:1,cloned:1,ip_summed:2,nohdr:1,nfctinfo:3;__u8 pkt_type:3,