linux内核网络-网络选项以及内核结构 “每日读书”

本文介绍了如何在TCP/IP内核配置中理解和使用选项,如QoS和fairqueueing,特别关注了CONFIG_NET_SCHED和CONFIG_NET_CLS_ACT。强调了这些选项如何影响sk_buff结构以及它们为何不适合作为模块编译。提到通过查找kconfig文件和查阅文档来确定编译选项与内核代码的关系。
摘要由CSDN通过智能技术生成

粗略阅读TCP/IP说明书或者内核配置可知网络代码提供了大量的选项虽然有用但是不一定总是需要防火墙多播一集其他功能这些选项大多数要求在内核数据结构附加其他字段因此sk_buff 是被C处理程序#ifdef 指示附加字段例如sk_buff 定义底端附近可以发现

struct sk_buff

{

#ifdef CONFIG_NET_SCHED

__u32 tc_index;

#ifdef CONFIG_NET_CLS_ACT

__u32 tc_verd;

__u32 tc_classid;

#endif

#endif

}

这表示只有编译期间定义了CONFIG_NET_SCHED 符号也就是管理员自动安装工具已经是能了某种版本make config 正确选项字段tc_index 才会数据结构一部分

前述例子实际上两个嵌套选择只有Qos and/or fair queueing支持存在CONFIG_NET_CLS_ACT 所用那些字段才会引入

顺便提一下应该注意到Qos选项不能编译成一个模块原因在于内核编译开启选项所得多数结果为不可逆一般而言任何引起内核数据结构改变选项(如把tc_index字段添加到sk_buff结构)都不适合编译成一个模块

通常会想知道make config 或者变量哪个编译选项特定#ifdef 符号相配了解一个代码区块什么时候会包含内核中2.6 版本内核找出这种关联性最快方式就是在那些分散代码树kconfig文件中寻找符号2.4 版本内核而言可以参考Decumentation/Configure.help 文件

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值