16ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/****************************************************************************
26ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************
36ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***
46ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   This header was automatically generated from a Linux kernel header
56ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   of the same name, to make information necessary for userspace to
66ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   call into the kernel available to libc.  It contains only constants,
76ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   structures, and macros generated from the original header, and thus,
86ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***   contains no copyrightable information.
96ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ***
106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************
116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************/
126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef _LINUX_SKBUFF_H
136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define _LINUX_SKBUFF_H
146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/kernel.h>
166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/compiler.h>
176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/time.h>
186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/cache.h>
196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <asm/atomic.h>
216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <asm/types.h>
226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/spinlock.h>
236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/mm.h>
246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/highmem.h>
256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/poll.h>
266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/net.h>
276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/textsearch.h>
286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <net/checksum.h>
296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/dmaengine.h>
306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define HAVE_ALLOC_SKB
326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define HAVE_ALIGNABLE_SKB
336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define CHECKSUM_NONE 0
356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define CHECKSUM_HW 1
366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define CHECKSUM_UNNECESSARY 2
376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SKB_DATA_ALIGN(X) (((X) + (SMP_CACHE_BYTES - 1)) &   ~(SMP_CACHE_BYTES - 1))
396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SKB_MAX_ORDER(X, ORDER) (((PAGE_SIZE << (ORDER)) - (X) -   sizeof(struct skb_shared_info)) &   ~(SMP_CACHE_BYTES - 1))
406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SKB_MAX_HEAD(X) (SKB_MAX_ORDER((X), 0))
416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SKB_MAX_ALLOC (SKB_MAX_ORDER(0, 2))
426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct net_device;
446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct sk_buff_head {
466ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
476ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct sk_buff *next;
486ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct sk_buff *prev;
496ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
506ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh __u32 qlen;
516ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh spinlock_t lock;
526ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
536ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
546ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct sk_buff;
556ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
566ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2)
576ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
586ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehtypedef struct skb_frag_struct skb_frag_t;
596ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
606ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct skb_frag_struct {
616ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct page *page;
626ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh __u16 page_offset;
636ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh __u16 size;
646ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
656ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
666ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct skb_shared_info {
676ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh atomic_t dataref;
686ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short nr_frags;
696ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short gso_size;
706ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
716ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short gso_segs;
726ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned short gso_type;
736ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned int ip6_frag_id;
746ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct sk_buff *frag_list;
756ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh skb_frag_t frags[MAX_SKB_FRAGS];
766ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
776ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
786ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SKB_DATAREF_SHIFT 16
796ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1)
806ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
816ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct skb_timeval {
826ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh u32 off_sec;
836ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh u32 off_usec;
846ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
856ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
866ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehenum {
876ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh SKB_FCLONE_UNAVAILABLE,
886ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh SKB_FCLONE_ORIG,
896ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh SKB_FCLONE_CLONE,
906ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
916ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
926ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehenum {
936ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh SKB_GSO_TCPV4 = 1 << 0,
946ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh SKB_GSO_UDP = 1 << 1,
956ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
966ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh SKB_GSO_DODGY = 1 << 2,
976ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
986ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh SKB_GSO_TCP_ECN = 1 << 3,
996ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1006ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh SKB_GSO_TCPV6 = 1 << 4,
1016ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
1026ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1036ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct sk_buff {
1046ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1056ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct sk_buff *next;
1066ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct sk_buff *prev;
1076ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1086ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct sock *sk;
1096ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct skb_timeval tstamp;
1106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct net_device *dev;
1116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct net_device *input_dev;
1126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh union {
1146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct tcphdr *th;
1156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct udphdr *uh;
1166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct icmphdr *icmph;
1176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct igmphdr *igmph;
1186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct iphdr *ipiph;
1196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct ipv6hdr *ipv6h;
1206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char *raw;
1216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh } h;
1226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh union {
1246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct iphdr *iph;
1256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct ipv6hdr *ipv6h;
1266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct arphdr *arph;
1276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char *raw;
1286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh } nh;
1296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh union {
1316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char *raw;
1326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh } mac;
1336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct dst_entry *dst;
1356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct sec_path *sp;
1366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh char cb[48];
1386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned int len,
1406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh data_len,
1416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh mac_len,
1426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh csum;
1436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh __u32 priority;
1446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh __u8 local_df:1,
1456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh cloned:1,
1466ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ip_summed:2,
1476ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh nohdr:1,
1486ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh nfctinfo:3;
1496ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh __u8 pkt_type:3,
1506ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh fclone:2,
1516ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ipvs_property:1;
1526ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh __be16 protocol;
1536ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1546ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh void (*destructor)(struct sk_buff *skb);
1556ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1566ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned int truesize;
1576ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh atomic_t users;
1586ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh unsigned char *head,
1596ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *data,
1606ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *tail,
1616ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *end;
1626ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh};
1636ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh
1646ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif
165