struct sk_buff { struct sk_buff * next; struct sk_buff * prev; struct sk_buff_head * list; struct sock * sk; struct timeval stamp; struct net_device * dev; struct net_device * input_dev; struct net_device * real_dev; union h; union nh; union mac; struct dst_entry * dst; char cb[40]; unsigned int len; unsigned int data_len; unsigned int mac_len; unsigned int csum; unsigned char cloned; unsigned char pkt_type; unsigned char ip_summed; __u32 priority; unsigned short protocol; unsigned short security; void (* destructor) (struct sk_buff *skb); #ifdef CONFIG_NETFILTER unsigned long nfmark; __u32 nfcache; __u32 nfctinfo; struct nf_conntrack * nfct; #ifdef CONFIG_NETFILTER_DEBUG unsigned int nf_debug; #endif #ifdef CONFIG_BRIDGE_NETFILTER struct nf_bridge_info * nf_bridge; #endif #endif #if defined(CONFIG_HIPPI) union private; #endif #ifdef CONFIG_NET_SCHED __u32 tc_index; #ifdef CONFIG_NET_CLS_ACT #endif #endif unsigned int truesize; atomic_t users; unsigned char * head; unsigned char * data; unsigned char * tail; unsigned char * end; };
Next buffer in list
Previous buffer in list
List we are on
Socket we are owned by
Time we arrived
Device we arrived on/are leaving by
Device we arrived on
The real device we are using
Transport layer header
Network layer header
Link layer header
FIXME: Describe this field
Control buffer. Free for use by every layer. Put private vars here
Length of actual data
Data length
Length of link layer header
Checksum
Head may be cloned (check refcnt to be sure)
Packet class
Driver fed us an IP checksum
Packet queueing priority
Packet protocol from driver
Security level of packet
Destruct function
Can be used for communication between hooks
Cache info
Relationship of this skb to the connection
Associated connection, if any
Netfilter debugging
Saved data about a bridged frame - see br_netfilter.c
Data which is private to the HIPPI implementation
Traffic control index
Buffer size
User count - see {datagram,tcp}.c
Head of buffer
Data head pointer
Tail pointer
End pointer