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