1b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin/****************************************************************************
2b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************************
3b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ***
4b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ***   This header was automatically generated from a Linux kernel header
5b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ***   of the same name, to make information necessary for userspace to
6b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ***   call into the kernel available to libc.  It contains only constants,
7b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ***   structures, and macros generated from the original header, and thus,
8b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ***   contains no copyrightable information.
9b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ***
10b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************************
11b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ****************************************************************************/
12b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#ifndef _LINUX_SKBUFF_H
13b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define _LINUX_SKBUFF_H
14b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
15b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/kernel.h>
16b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/compiler.h>
17b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/time.h>
18b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/cache.h>
19b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
20b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <asm/atomic.h>
21b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <asm/types.h>
22b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/spinlock.h>
23b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/mm.h>
24b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/highmem.h>
25b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/poll.h>
26b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/net.h>
27b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/textsearch.h>
28b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <net/checksum.h>
29b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#include <linux/dmaengine.h>
30b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
31b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define HAVE_ALLOC_SKB
32b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define HAVE_ALIGNABLE_SKB
33b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
34b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define CHECKSUM_NONE 0
35b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define CHECKSUM_HW 1
36b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define CHECKSUM_UNNECESSARY 2
37b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
38b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SKB_DATA_ALIGN(X) (((X) + (SMP_CACHE_BYTES - 1)) &   ~(SMP_CACHE_BYTES - 1))
39b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SKB_MAX_ORDER(X, ORDER) (((PAGE_SIZE << (ORDER)) - (X) -   sizeof(struct skb_shared_info)) &   ~(SMP_CACHE_BYTES - 1))
40b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SKB_MAX_HEAD(X) (SKB_MAX_ORDER((X), 0))
41b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SKB_MAX_ALLOC (SKB_MAX_ORDER(0, 2))
42b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
43b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct net_device;
44b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
45b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct sk_buff_head {
46b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
47b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct sk_buff *next;
48b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct sk_buff *prev;
49b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
50b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __u32 qlen;
51b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin spinlock_t lock;
52b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
53b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
54b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct sk_buff;
55b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
56b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2)
57b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
58b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavintypedef struct skb_frag_struct skb_frag_t;
59b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
60b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct skb_frag_struct {
61b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct page *page;
62b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __u16 page_offset;
63b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __u16 size;
64b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
65b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
66b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct skb_shared_info {
67b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin atomic_t dataref;
68b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned short nr_frags;
69b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned short gso_size;
70b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
71b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned short gso_segs;
72b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned short gso_type;
73b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned int ip6_frag_id;
74b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct sk_buff *frag_list;
75b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin skb_frag_t frags[MAX_SKB_FRAGS];
76b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
77b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
78b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SKB_DATAREF_SHIFT 16
79b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1)
80b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
81b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct skb_timeval {
82b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin u32 off_sec;
83b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin u32 off_usec;
84b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
85b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
86b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinenum {
87b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SKB_FCLONE_UNAVAILABLE,
88b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SKB_FCLONE_ORIG,
89b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SKB_FCLONE_CLONE,
90b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
91b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
92b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinenum {
93b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SKB_GSO_TCPV4 = 1 << 0,
94b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SKB_GSO_UDP = 1 << 1,
95b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
96b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SKB_GSO_DODGY = 1 << 2,
97b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
98b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SKB_GSO_TCP_ECN = 1 << 3,
99b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
100b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin SKB_GSO_TCPV6 = 1 << 4,
101b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
102b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
103b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavinstruct sk_buff {
104b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
105b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct sk_buff *next;
106b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct sk_buff *prev;
107b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
108b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct sock *sk;
109b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct skb_timeval tstamp;
110b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct net_device *dev;
111b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct net_device *input_dev;
112b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
113b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin union {
114b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct tcphdr *th;
115b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct udphdr *uh;
116b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct icmphdr *icmph;
117b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct igmphdr *igmph;
118b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct iphdr *ipiph;
119b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct ipv6hdr *ipv6h;
120b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned char *raw;
121b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } h;
122b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
123b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin union {
124b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct iphdr *iph;
125b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct ipv6hdr *ipv6h;
126b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct arphdr *arph;
127b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned char *raw;
128b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } nh;
129b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
130b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin union {
131b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned char *raw;
132b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin } mac;
133b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
134b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct dst_entry *dst;
135b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin struct sec_path *sp;
136b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
137b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin char cb[48];
138b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
139b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned int len,
140b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin data_len,
141b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin mac_len,
142b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin csum;
143b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __u32 priority;
144b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __u8 local_df:1,
145b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin cloned:1,
146b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ip_summed:2,
147b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nohdr:1,
148b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin nfctinfo:3;
149b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __u8 pkt_type:3,
150b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin fclone:2,
151b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin ipvs_property:1;
152b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin __be16 protocol;
153b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
154b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin void (*destructor)(struct sk_buff *skb);
155b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
156b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned int truesize;
157b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin atomic_t users;
158b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin unsigned char *head,
159b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *data,
160b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *tail,
161b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin *end;
162b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin};
163b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin
164b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin#endif
165b44cdb1b44b144d09e8ec950d1e8e4c280064056Rebecca Schultz Zavin