|  | /**************************************************************************** | 
|  | **************************************************************************** | 
|  | *** | 
|  | ***   This header was automatically generated from a Linux kernel header | 
|  | ***   of the same name, to make information necessary for userspace to | 
|  | ***   call into the kernel available to libc.  It contains only constants, | 
|  | ***   structures, and macros generated from the original header, and thus, | 
|  | ***   contains no copyrightable information. | 
|  | *** | 
|  | **************************************************************************** | 
|  | ****************************************************************************/ | 
|  | #ifndef _LINUX_SKBUFF_H | 
|  | #define _LINUX_SKBUFF_H | 
|  |  | 
|  | #include <linux/kernel.h> | 
|  | #include <linux/compiler.h> | 
|  | #include <linux/time.h> | 
|  | #include <linux/cache.h> | 
|  |  | 
|  | #include <asm/atomic.h> | 
|  | #include <asm/types.h> | 
|  | #include <linux/spinlock.h> | 
|  | #include <linux/mm.h> | 
|  | #include <linux/highmem.h> | 
|  | #include <linux/poll.h> | 
|  | #include <linux/net.h> | 
|  | #include <linux/textsearch.h> | 
|  | #include <net/checksum.h> | 
|  | #include <linux/dmaengine.h> | 
|  |  | 
|  | #define HAVE_ALLOC_SKB | 
|  | #define HAVE_ALIGNABLE_SKB | 
|  |  | 
|  | #define CHECKSUM_NONE 0 | 
|  | #define CHECKSUM_HW 1 | 
|  | #define CHECKSUM_UNNECESSARY 2 | 
|  |  | 
|  | #define SKB_DATA_ALIGN(X) (((X) + (SMP_CACHE_BYTES - 1)) &   ~(SMP_CACHE_BYTES - 1)) | 
|  | #define SKB_MAX_ORDER(X, ORDER) (((PAGE_SIZE << (ORDER)) - (X) -   sizeof(struct skb_shared_info)) &   ~(SMP_CACHE_BYTES - 1)) | 
|  | #define SKB_MAX_HEAD(X) (SKB_MAX_ORDER((X), 0)) | 
|  | #define SKB_MAX_ALLOC (SKB_MAX_ORDER(0, 2)) | 
|  |  | 
|  | struct net_device; | 
|  |  | 
|  | struct sk_buff_head { | 
|  |  | 
|  | struct sk_buff *next; | 
|  | struct sk_buff *prev; | 
|  |  | 
|  | __u32 qlen; | 
|  | spinlock_t lock; | 
|  | }; | 
|  |  | 
|  | struct sk_buff; | 
|  |  | 
|  | #define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2) | 
|  |  | 
|  | typedef struct skb_frag_struct skb_frag_t; | 
|  |  | 
|  | struct skb_frag_struct { | 
|  | struct page *page; | 
|  | __u16 page_offset; | 
|  | __u16 size; | 
|  | }; | 
|  |  | 
|  | struct skb_shared_info { | 
|  | atomic_t dataref; | 
|  | unsigned short nr_frags; | 
|  | unsigned short gso_size; | 
|  |  | 
|  | unsigned short gso_segs; | 
|  | unsigned short gso_type; | 
|  | unsigned int ip6_frag_id; | 
|  | struct sk_buff *frag_list; | 
|  | skb_frag_t frags[MAX_SKB_FRAGS]; | 
|  | }; | 
|  |  | 
|  | #define SKB_DATAREF_SHIFT 16 | 
|  | #define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1) | 
|  |  | 
|  | struct skb_timeval { | 
|  | u32 off_sec; | 
|  | u32 off_usec; | 
|  | }; | 
|  |  | 
|  | enum { | 
|  | SKB_FCLONE_UNAVAILABLE, | 
|  | SKB_FCLONE_ORIG, | 
|  | SKB_FCLONE_CLONE, | 
|  | }; | 
|  |  | 
|  | enum { | 
|  | SKB_GSO_TCPV4 = 1 << 0, | 
|  | SKB_GSO_UDP = 1 << 1, | 
|  |  | 
|  | SKB_GSO_DODGY = 1 << 2, | 
|  |  | 
|  | SKB_GSO_TCP_ECN = 1 << 3, | 
|  |  | 
|  | SKB_GSO_TCPV6 = 1 << 4, | 
|  | }; | 
|  |  | 
|  | struct sk_buff { | 
|  |  | 
|  | struct sk_buff *next; | 
|  | struct sk_buff *prev; | 
|  |  | 
|  | struct sock *sk; | 
|  | struct skb_timeval tstamp; | 
|  | struct net_device *dev; | 
|  | struct net_device *input_dev; | 
|  |  | 
|  | union { | 
|  | struct tcphdr *th; | 
|  | struct udphdr *uh; | 
|  | struct icmphdr *icmph; | 
|  | struct igmphdr *igmph; | 
|  | struct iphdr *ipiph; | 
|  | struct ipv6hdr *ipv6h; | 
|  | unsigned char *raw; | 
|  | } h; | 
|  |  | 
|  | union { | 
|  | struct iphdr *iph; | 
|  | struct ipv6hdr *ipv6h; | 
|  | struct arphdr *arph; | 
|  | unsigned char *raw; | 
|  | } nh; | 
|  |  | 
|  | union { | 
|  | unsigned char *raw; | 
|  | } mac; | 
|  |  | 
|  | struct dst_entry *dst; | 
|  | struct sec_path *sp; | 
|  |  | 
|  | char cb[48]; | 
|  |  | 
|  | unsigned int 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, | 
|  | fclone:2, | 
|  | ipvs_property:1; | 
|  | __be16 protocol; | 
|  |  | 
|  | void (*destructor)(struct sk_buff *skb); | 
|  |  | 
|  | unsigned int truesize; | 
|  | atomic_t users; | 
|  | unsigned char *head, | 
|  | *data, | 
|  | *tail, | 
|  | *end; | 
|  | }; | 
|  |  | 
|  | #endif |