165 lines
3.2 KiB
C
165 lines
3.2 KiB
C
/****************************************************************************
|
|
****************************************************************************
|
|
***
|
|
*** 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
|