回 帖 发 新 帖 刷新版面

主题:关于struct sk_buff的问题

各位大侠,struct sk_buff是怎样了个结构呀,里面的各成员具体代表什么呀,请各位高手指点一二,小弟不胜感激!!

回复列表 (共5个回复)

沙发

嘿嘿我的存货还是很全的,这个结构是linux 源码linux.h中的一个结构.你要干什么?
对了,记得评一下分.谢谢
struct sk_buff {
    struct sk_buff    * next;                
         struct sk_buff    * prev;            
    struct sk_buff_head * list;        
    struct sock    *sk;            
    struct timeval    stamp;            
    struct net_device    *dev;        
    struct net_device    *real_dev;    

    union
    {
        struct tcphdr    *th;
        struct udphdr    *uh;
        struct icmphdr    *icmph;
        struct igmphdr    *igmph;
        struct iphdr    *ipiph;
        struct spxhdr    *spxh;
        unsigned char    *raw;
    } h;

    
    union
    {
        struct iphdr    *iph;
        struct ipv6hdr    *ipv6h;
        struct arphdr    *arph;
        struct ipxhdr    *ipxh;
        unsigned char    *raw;
    } nh;
  
    
    

板凳

union
    {    
          struct ethhdr    *ethernet;
          unsigned char     *raw;
    } mac;

    struct  dst_entry *dst;

     
    char        cb[48];     

    unsigned int     len;        

    unsigned int     data_len;
    unsigned int    csum;                
         unsigned char     __unused,            
        
            cloned,                       pkt_type,        
              ip_summed;            __u32        priority;            atomic_t    users;            
    unsigned short    protocol;        

    unsigned short    security;        
    unsigned int    truesize;                            

    unsigned char    *head;                            
    unsigned char    *data;                            
    unsigned char    *tail;            
    unsigned char     *end;            
    void         (*destructor)(struct sk_buff *);    
#ifdef CONFIG_NETFILTER
    
        unsigned long    nfmark;
    
    __u32        nfcache;
    
    struct nf_ct_info *nfct;
#ifdef CONFIG_NETFILTER_DEBUG
        unsigned int nf_debug;
#endif
#endif

#if defined(CONFIG_HIPPI)
    union{
        __u32    ifield;
    } private;
#endif

#ifdef CONFIG_NET_SCHED
       __u32           tc_index;               
#endif
};

3 楼

这个结构是Linux 用来在网络现实的各层中传递网络数据的,
我个结构的原码我也有,只是不知各成员具体表示什么意思,
有那位大侠知道的话,帮忙指点一下。

4 楼

你的原码没有注释吗,我最近正在做这方面的项目,我用的是2.4.31.你呢?

5 楼

有一点注释,不太详细,看得不是太明白。
我也在作这方面的项目,我用的是2.4.20-8。
如果收到了一个数据包(Sk_buff格式的,IP层的),怎样转发呀,就像IP路由一样,

我来回复

您尚未登录,请登录后再回复。点此登录或注册