Subversion Repositories shark

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 pj 1
#ifndef __SKBUFF__
2
#define __SKBUFF__
3
 
4
#include <linux/compatib.h>
5
 
6
#define HAVE_ALLOC_SKB          /* For the drivers to know */
7
#define HAVE_ALIGNABLE_SKB      /* Ditto 8)                */
8
 
9
 
10
#define FREE_READ       1
11
#define FREE_WRITE      0
12
 
13
#define CHECKSUM_NONE 0
14
#define CHECKSUM_HW 1
15
#define CHECKSUM_UNNECESSARY 2
16
 
17
 
18
struct sk_buff_head
19
{
20
        struct sk_buff  * next;
21
        struct sk_buff  * prev;
22
        __u32           qlen;           /* Must be same length as a pointer
23
                                           for using debugging */
24
#if CONFIG_SKB_CHECK
25
        int             magic_debug_cookie;
26
#endif
27
};
28
 
29
 
30
struct sk_buff
31
{
32
        struct sk_buff  * next;                 /* Next buffer in list                          */
33
        struct sk_buff  * prev;                 /* Previous buffer in list                      */
34
        struct sk_buff_head * list;             /* List we are on                               */
35
#if CONFIG_SKB_CHECK
36
        int             magic_debug_cookie;
37
#endif
38
#if 0
39
        struct sk_buff  *link3;                 /* Link for IP protocol level buffer chains     */
40
#endif
41
 
42
#if 0
43
        struct sock     *sk;                    /* Socket we are owned by                       */
44
#endif
45
        struct device   *dev;                   /* Device we arrived on/are leaving by          */
46
#ifdef NOTWORK
47
        unsigned long   when;                   /* used to compute rtt's                        */
48
        struct timeval  stamp;                  /* Time we arrived                              */
49
        union
50
        {
51
                struct tcphdr   *th;
52
                struct ethhdr   *eth;
53
                struct iphdr    *iph;
54
                struct udphdr   *uh;
55
                unsigned char   *raw;
56
                /* for passing file handles in a unix domain socket */
57
                void *filp;
58
        } h;
59
 
60
        union
61
        {      
62
                /* As yet incomplete physical layer views */
63
                unsigned char   *raw;
64
                struct ethhdr   *ethernet;
65
        } mac;
66
 
67
        struct iphdr    *ip_hdr;                /* For IPPROTO_RAW                              */
68
 
69
#endif /*NOTWORK*/
70
 
71
 
72
        unsigned long   len;                    /* Length of actual data                        */
73
#if 0
74
        unsigned long   csum;                   /* Checksum                                     */
75
        __u32           saddr;                  /* IP source address                            */
76
        __u32           daddr;                  /* IP target address                            */
77
        __u32           raddr;                  /* IP next hop address                          */
78
        __u32           seq;                    /* TCP sequence number                          */
79
        __u32           end_seq;                /* seq [+ fin] [+ syn] + datalen                */
80
        __u32           ack_seq;                /* TCP ack sequence number                      */
81
        unsigned char   proto_priv[16];         /* Protocol private data                        */
82
#endif
83
        volatile char   acked,                  /* Are we acked ?                               */
84
                        used,                   /* Are we in use ?                              */
85
                        free,                   /* How to free this buffer                      */
86
                        arp;                    /* Has IP/ARP resolution finished               */
87
#if 0
88
        unsigned char   tries,                  /* Times tried                                  */
89
                        lock,                   /* Are we locked ?                              */
90
                        localroute,             /* Local routing asserted for this frame        */
91
                        pkt_type,               /* Packet class                                 */
92
                        pkt_bridged,            /* Tracker for bridging                         */
93
#endif
94
    unsigned char       ip_summed;              /* Driver fed us an IP checksum                 */
95
#if 0
96
#define PACKET_HOST             0               /* To us                                        */
97
#define PACKET_BROADCAST        1               /* To all                                       */
98
#define PACKET_MULTICAST        2               /* To group                                     */
99
#define PACKET_OTHERHOST        3               /* To someone else                              */
100
        unsigned short  users;                  /* User count - see datagram.c,tcp.c            */
101
#endif 
102
        unsigned short  protocol;               /* Packet protocol from driver.                 */
103
#if 0
104
        unsigned int    truesize;               /* Buffer size                                  */
105
 
106
 
107
 
108
        atomic_t        count;                  /* reference count                              */
109
 
110
 
111
        struct sk_buff  *data_skb;              /* Link to the actual data skb                  */
112
#endif 
113
        unsigned char   *head;                  /* Head of buffer                               */
114
        unsigned char   *data;                  /* Data head pointer                            */
115
        unsigned char   *tail;                  /* Tail pointer                                 */
116
#if 0
117
        unsigned char   *end;                   /* End pointer                                  */
118
        void            (*destructor)(struct sk_buff *);        /* Destruct function            */
119
        __u16           redirport;              /* Redirect port                                */
120
#endif 
121
};
122
 
123
#define dev_kfree_skb(a)
124
#define alloc_skb(a,b) dev_alloc_skb(a)
125
/* #define skb_device_unlock(skb); */
126
extern struct sk_buff *         dev_alloc_skb(unsigned int size);
127
extern unsigned char *          skb_put(struct sk_buff *skb, int len);
128
extern void skb_queue_head_init(struct sk_buff_head *list);
129
extern struct sk_buff *         skb_clone(struct sk_buff *skb, int priority);
130
extern void                     skb_reserve(struct sk_buff *skb, int len);
131
 
132
#endif