struct sk_buff — socket buffer
struct sk_buff { struct sk_buff * next; struct sk_buff * prev; ktime_t tstamp; struct sock * sk; struct net_device * dev; char cb[48]; unsigned long _skb_refdst; #ifdef CONFIG_XFRM struct sec_path * sp; #endif unsigned int len; unsigned int data_len; __u16 mac_len; __u16 hdr_len; union {unnamed_union}; __u16 vlan_tci; sk_buff_data_t transport_header; sk_buff_data_t network_header; sk_buff_data_t mac_header; sk_buff_data_t tail; sk_buff_data_t end; unsigned char * head; unsigned char * data; unsigned int truesize; atomic_t users; };
Next buffer in list
Previous buffer in list
Time we arrived
Socket we are owned by
Device we arrived on/are leaving by
Control buffer. Free for use by every layer. Put private vars here
destination entry (with norefcount bit)
the security path, used for xfrm
Length of actual data
Data length
Length of link layer header
writable header length of cloned skb
anonymous
vlan tag control information
Transport layer header
Network layer header
Link layer header
Tail pointer
End pointer
Head of buffer
Data head pointer
Buffer size
User count - see {datagram,tcp}.c