设为首页 加入收藏

TOP

Linux网络协议栈之套接字缓冲区(二)
2014-11-24 12:29:28 来源: 作者: 【 】 浏览:1
Tags:Linux 网络 协议 套接字 缓冲区


/*标识payload是否被单独引用,不存在协议首部*/


nohdr:1,



/*防火墙使用*/


nfctinfo:3;



/*桢类型,分类是由二层目的地址来决定的,对于以太网设备


来说,该字段由eth_type_trans()初始化*/


__u8 pkt_type:3,



/*当前克隆状态*/


fclone:2,



ipvs_property:1;



/*从二层设备角度看到的上层协议,即链路层承载的三层协议类型*/


__be16 protocol;



/*skb析构函数指针,在释放skb时被调用,完成某些必要的工作*/


void (*destructor)(struct sk_buff *skb);



/*在数据结构中定义的宏不能编译成模块;


原因在于内核编译之后,开启该选项所得


的多数结果为不可逆的,一般而言,任何


引起内核数据结构改变的选项,都不适合


编译成一个模块,编译选项和特定的#ifdef


符号相配,以了解一个代码区块什么时候


会包含到内核中,这种关联在源码树的


Kconfig文件中*/


#ifdef CONFIG_NETFILTER


/*防火墙使用*/


struct nf_conntrack *nfct;


#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)


struct sk_buff *nfct_reasm;


#endif


#ifdef CONFIG_BRIDGE_NETFILTER


/*防火墙使用*/


struct nf_bridge_info *nf_bridge;


#endif


#endif /* CONFIG_NETFILTER */


#ifdef CONFIG_NET_SCHED


/*用于流量控制*/


__u16 tc_index; /* traffic control index */


#ifdef CONFIG_NET_CLS_ACT


/*用于流量控制*/


__u16 tc_verd; /* traffic control verdict */


#endif


#endif


#ifdef CONFIG_NET_DMA


dma_cookie_t dma_cookie;


#endif


#ifdef CONFIG_NETWORK_SECMARK


__u32 secmark;


#endif



__u32 mark;



/* These elements must be at the end, see alloc_skb() for details. */


/*全部数据的长度+该结构的长度,如果申请了一个len字节的缓冲区


该字段为len+sizeof(sk_buff)*/


unsigned int truesize;



/*引用计数,使用这个缓冲区的实例的数目*/


atomic_t users;



/*headend指向数据在内存中的起始和结束位置,即


已经分配的缓冲区空间的开端和尾端


datatail指向数据区域的起始和结束位置,即


实际数据的开端和尾端*/


unsigned char *head,


*data,


*tail,


*end;


};


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Boost库简介以及在cygwin下的安装.. 下一篇在Ubuntu 12.04 下编译GCC 4.7

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)