关于在内核中ipv4封包的处理
时间:2010-11-01
来源:互联网
在2.6.35内核中
在处理封包的程序里面,在ip_rcv这个函数里面,有以下的宏定义
IP_UPD_PO_STATS_BH(dev_net(dev), IPSTATS_MIB_IN, skb->len);
IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INHDRERRORS);
IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INDISCARDS);
是什么意思呢
我感觉在碰到这样子的宏定义的时候,感觉比较难以理解其中的意思。
请各位高手指点迷津啊
小弟谢过了
在处理封包的程序里面,在ip_rcv这个函数里面,有以下的宏定义
IP_UPD_PO_STATS_BH(dev_net(dev), IPSTATS_MIB_IN, skb->len);
IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INHDRERRORS);
IP_INC_STATS_BH(dev_net(dev), IPSTATS_MIB_INDISCARDS);
是什么意思呢
我感觉在碰到这样子的宏定义的时候,感觉比较难以理解其中的意思。
请各位高手指点迷津啊
小弟谢过了
作者: lantian0811 发布时间: 2010-11-01
大概是用来为下面这些东西记录信息的
接收数据包:42640 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:38193 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收数据包:42640 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:38193 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
作者: halfslipper 发布时间: 2010-12-08
回复 lantian0811
内核对于一些统计,都是采用这种方法来做的,算是一种标准方式了。你列的那些信息是,是关于网络层snmp统计的信息,也可以通过netstat 指令看到这些统计值。关于这些统计的意义,你可以查看相应的宏定义,都有详细的注释,例如:
IPSTATS_MIB_INTRUNCATEDPKTS, /* InTruncatedPkts */
而关于宏的实现,也可以跟一下,大致就是找到结构的某个成员,然后更新它的值,这种统计,一般都是Per-CPU变量:
复制代码
内核对于一些统计,都是采用这种方法来做的,算是一种标准方式了。你列的那些信息是,是关于网络层snmp统计的信息,也可以通过netstat 指令看到这些统计值。关于这些统计的意义,你可以查看相应的宏定义,都有详细的注释,例如:
IPSTATS_MIB_INTRUNCATEDPKTS, /* InTruncatedPkts */
而关于宏的实现,也可以跟一下,大致就是找到结构的某个成员,然后更新它的值,这种统计,一般都是Per-CPU变量:
- IP_UPD_PO_STATS_BH(dev_net(dev), IPSTATS_MIB_IN, skb->len);
-
- #define IP_UPD_PO_STATS_BH(net, field, val) SNMP_UPD_PO_STATS_BH((net)->mib.ip_statistics, field, val)
-
- #define SNMP_UPD_PO_STATS_BH(mib, basefield, addend) \
- do { \
- __typeof__(mib[0]) ptr = per_cpu_ptr(mib[!in_softirq()], raw_smp_processor_id());\
- ptr->mibs[basefield##PKTS]++; \
- ptr->mibs[basefield##OCTETS] += addend;\
- } while (0)
作者: 独孤九贱 发布时间: 2010-12-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28