1951a39d68df598db08dfced8b4707755864a0492Ying Wang/**************************************************************************** 2951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 3951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 4951a39d68df598db08dfced8b4707755864a0492Ying Wang *** This header was automatically generated from a Linux kernel header 5951a39d68df598db08dfced8b4707755864a0492Ying Wang *** of the same name, to make information necessary for userspace to 6951a39d68df598db08dfced8b4707755864a0492Ying Wang *** call into the kernel available to libc. It contains only constants, 7951a39d68df598db08dfced8b4707755864a0492Ying Wang *** structures, and macros generated from the original header, and thus, 8951a39d68df598db08dfced8b4707755864a0492Ying Wang *** contains no copyrightable information. 9951a39d68df598db08dfced8b4707755864a0492Ying Wang *** 10951a39d68df598db08dfced8b4707755864a0492Ying Wang **************************************************************************** 11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/ 12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _LINUX_SKBUFF_H 13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _LINUX_SKBUFF_H 14951a39d68df598db08dfced8b4707755864a0492Ying Wang 15951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/kernel.h> 16951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/compiler.h> 17951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/time.h> 18951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/cache.h> 19951a39d68df598db08dfced8b4707755864a0492Ying Wang 20951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/atomic.h> 21951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <asm/types.h> 22951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/spinlock.h> 23951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/mm.h> 24951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/highmem.h> 25951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/poll.h> 26951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/net.h> 27951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/textsearch.h> 28951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <net/checksum.h> 29951a39d68df598db08dfced8b4707755864a0492Ying Wang#include <linux/dmaengine.h> 30951a39d68df598db08dfced8b4707755864a0492Ying Wang 31951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HAVE_ALLOC_SKB 32951a39d68df598db08dfced8b4707755864a0492Ying Wang#define HAVE_ALIGNABLE_SKB 33951a39d68df598db08dfced8b4707755864a0492Ying Wang 34951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CHECKSUM_NONE 0 35951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CHECKSUM_HW 1 36951a39d68df598db08dfced8b4707755864a0492Ying Wang#define CHECKSUM_UNNECESSARY 2 37951a39d68df598db08dfced8b4707755864a0492Ying Wang 38951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SKB_DATA_ALIGN(X) (((X) + (SMP_CACHE_BYTES - 1)) & ~(SMP_CACHE_BYTES - 1)) 39951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SKB_MAX_ORDER(X, ORDER) (((PAGE_SIZE << (ORDER)) - (X) - sizeof(struct skb_shared_info)) & ~(SMP_CACHE_BYTES - 1)) 40951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SKB_MAX_HEAD(X) (SKB_MAX_ORDER((X), 0)) 41951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SKB_MAX_ALLOC (SKB_MAX_ORDER(0, 2)) 42951a39d68df598db08dfced8b4707755864a0492Ying Wang 43951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct net_device; 44951a39d68df598db08dfced8b4707755864a0492Ying Wang 45951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct sk_buff_head { 46951a39d68df598db08dfced8b4707755864a0492Ying Wang 47951a39d68df598db08dfced8b4707755864a0492Ying Wang struct sk_buff *next; 48951a39d68df598db08dfced8b4707755864a0492Ying Wang struct sk_buff *prev; 49951a39d68df598db08dfced8b4707755864a0492Ying Wang 50951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 qlen; 51951a39d68df598db08dfced8b4707755864a0492Ying Wang spinlock_t lock; 52951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 53951a39d68df598db08dfced8b4707755864a0492Ying Wang 54951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct sk_buff; 55951a39d68df598db08dfced8b4707755864a0492Ying Wang 56951a39d68df598db08dfced8b4707755864a0492Ying Wang#define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2) 57951a39d68df598db08dfced8b4707755864a0492Ying Wang 58951a39d68df598db08dfced8b4707755864a0492Ying Wangtypedef struct skb_frag_struct skb_frag_t; 59951a39d68df598db08dfced8b4707755864a0492Ying Wang 60951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct skb_frag_struct { 61951a39d68df598db08dfced8b4707755864a0492Ying Wang struct page *page; 62951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 page_offset; 63951a39d68df598db08dfced8b4707755864a0492Ying Wang __u16 size; 64951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 65951a39d68df598db08dfced8b4707755864a0492Ying Wang 66951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct skb_shared_info { 67951a39d68df598db08dfced8b4707755864a0492Ying Wang atomic_t dataref; 68951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short nr_frags; 69951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short gso_size; 70951a39d68df598db08dfced8b4707755864a0492Ying Wang 71951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short gso_segs; 72951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned short gso_type; 73951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned int ip6_frag_id; 74951a39d68df598db08dfced8b4707755864a0492Ying Wang struct sk_buff *frag_list; 75951a39d68df598db08dfced8b4707755864a0492Ying Wang skb_frag_t frags[MAX_SKB_FRAGS]; 76951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 77951a39d68df598db08dfced8b4707755864a0492Ying Wang 78951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SKB_DATAREF_SHIFT 16 79951a39d68df598db08dfced8b4707755864a0492Ying Wang#define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1) 80951a39d68df598db08dfced8b4707755864a0492Ying Wang 81951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct skb_timeval { 82951a39d68df598db08dfced8b4707755864a0492Ying Wang u32 off_sec; 83951a39d68df598db08dfced8b4707755864a0492Ying Wang u32 off_usec; 84951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 85951a39d68df598db08dfced8b4707755864a0492Ying Wang 86951a39d68df598db08dfced8b4707755864a0492Ying Wangenum { 87951a39d68df598db08dfced8b4707755864a0492Ying Wang SKB_FCLONE_UNAVAILABLE, 88951a39d68df598db08dfced8b4707755864a0492Ying Wang SKB_FCLONE_ORIG, 89951a39d68df598db08dfced8b4707755864a0492Ying Wang SKB_FCLONE_CLONE, 90951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 91951a39d68df598db08dfced8b4707755864a0492Ying Wang 92951a39d68df598db08dfced8b4707755864a0492Ying Wangenum { 93951a39d68df598db08dfced8b4707755864a0492Ying Wang SKB_GSO_TCPV4 = 1 << 0, 94951a39d68df598db08dfced8b4707755864a0492Ying Wang SKB_GSO_UDP = 1 << 1, 95951a39d68df598db08dfced8b4707755864a0492Ying Wang 96951a39d68df598db08dfced8b4707755864a0492Ying Wang SKB_GSO_DODGY = 1 << 2, 97951a39d68df598db08dfced8b4707755864a0492Ying Wang 98951a39d68df598db08dfced8b4707755864a0492Ying Wang SKB_GSO_TCP_ECN = 1 << 3, 99951a39d68df598db08dfced8b4707755864a0492Ying Wang 100951a39d68df598db08dfced8b4707755864a0492Ying Wang SKB_GSO_TCPV6 = 1 << 4, 101951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 102951a39d68df598db08dfced8b4707755864a0492Ying Wang 103951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct sk_buff { 104951a39d68df598db08dfced8b4707755864a0492Ying Wang 105951a39d68df598db08dfced8b4707755864a0492Ying Wang struct sk_buff *next; 106951a39d68df598db08dfced8b4707755864a0492Ying Wang struct sk_buff *prev; 107951a39d68df598db08dfced8b4707755864a0492Ying Wang 108951a39d68df598db08dfced8b4707755864a0492Ying Wang struct sock *sk; 109951a39d68df598db08dfced8b4707755864a0492Ying Wang struct skb_timeval tstamp; 110951a39d68df598db08dfced8b4707755864a0492Ying Wang struct net_device *dev; 111951a39d68df598db08dfced8b4707755864a0492Ying Wang struct net_device *input_dev; 112951a39d68df598db08dfced8b4707755864a0492Ying Wang 113951a39d68df598db08dfced8b4707755864a0492Ying Wang union { 114951a39d68df598db08dfced8b4707755864a0492Ying Wang struct tcphdr *th; 115951a39d68df598db08dfced8b4707755864a0492Ying Wang struct udphdr *uh; 116951a39d68df598db08dfced8b4707755864a0492Ying Wang struct icmphdr *icmph; 117951a39d68df598db08dfced8b4707755864a0492Ying Wang struct igmphdr *igmph; 118951a39d68df598db08dfced8b4707755864a0492Ying Wang struct iphdr *ipiph; 119951a39d68df598db08dfced8b4707755864a0492Ying Wang struct ipv6hdr *ipv6h; 120951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char *raw; 121951a39d68df598db08dfced8b4707755864a0492Ying Wang } h; 122951a39d68df598db08dfced8b4707755864a0492Ying Wang 123951a39d68df598db08dfced8b4707755864a0492Ying Wang union { 124951a39d68df598db08dfced8b4707755864a0492Ying Wang struct iphdr *iph; 125951a39d68df598db08dfced8b4707755864a0492Ying Wang struct ipv6hdr *ipv6h; 126951a39d68df598db08dfced8b4707755864a0492Ying Wang struct arphdr *arph; 127951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char *raw; 128951a39d68df598db08dfced8b4707755864a0492Ying Wang } nh; 129951a39d68df598db08dfced8b4707755864a0492Ying Wang 130951a39d68df598db08dfced8b4707755864a0492Ying Wang union { 131951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char *raw; 132951a39d68df598db08dfced8b4707755864a0492Ying Wang } mac; 133951a39d68df598db08dfced8b4707755864a0492Ying Wang 134951a39d68df598db08dfced8b4707755864a0492Ying Wang struct dst_entry *dst; 135951a39d68df598db08dfced8b4707755864a0492Ying Wang struct sec_path *sp; 136951a39d68df598db08dfced8b4707755864a0492Ying Wang 137951a39d68df598db08dfced8b4707755864a0492Ying Wang char cb[48]; 138951a39d68df598db08dfced8b4707755864a0492Ying Wang 139951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned int len, 140951a39d68df598db08dfced8b4707755864a0492Ying Wang data_len, 141951a39d68df598db08dfced8b4707755864a0492Ying Wang mac_len, 142951a39d68df598db08dfced8b4707755864a0492Ying Wang csum; 143951a39d68df598db08dfced8b4707755864a0492Ying Wang __u32 priority; 144951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 local_df:1, 145951a39d68df598db08dfced8b4707755864a0492Ying Wang cloned:1, 146951a39d68df598db08dfced8b4707755864a0492Ying Wang ip_summed:2, 147951a39d68df598db08dfced8b4707755864a0492Ying Wang nohdr:1, 148951a39d68df598db08dfced8b4707755864a0492Ying Wang nfctinfo:3; 149951a39d68df598db08dfced8b4707755864a0492Ying Wang __u8 pkt_type:3, 150951a39d68df598db08dfced8b4707755864a0492Ying Wang fclone:2, 151951a39d68df598db08dfced8b4707755864a0492Ying Wang ipvs_property:1; 152951a39d68df598db08dfced8b4707755864a0492Ying Wang __be16 protocol; 153951a39d68df598db08dfced8b4707755864a0492Ying Wang 154951a39d68df598db08dfced8b4707755864a0492Ying Wang void (*destructor)(struct sk_buff *skb); 155951a39d68df598db08dfced8b4707755864a0492Ying Wang 156951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned int truesize; 157951a39d68df598db08dfced8b4707755864a0492Ying Wang atomic_t users; 158951a39d68df598db08dfced8b4707755864a0492Ying Wang unsigned char *head, 159951a39d68df598db08dfced8b4707755864a0492Ying Wang *data, 160951a39d68df598db08dfced8b4707755864a0492Ying Wang *tail, 161951a39d68df598db08dfced8b4707755864a0492Ying Wang *end; 162951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 163951a39d68df598db08dfced8b4707755864a0492Ying Wang 164951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 165