免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1455 | 回复: 3

[网络子系统] init_conntrack函数 [复制链接]

论坛徽章:
5
处女座
日期:2014-10-15 11:57:302015年亚洲杯之中国
日期:2015-03-04 17:05:552015亚冠之西悉尼流浪者
日期:2015-07-31 12:14:2915-16赛季CBA联赛之同曦
日期:2015-12-10 18:14:0615-16赛季CBA联赛之北京
日期:2016-07-07 17:01:53
发表于 2015-11-06 10:46 |显示全部楼层
内核版本linux-4.0.5,init_conntrack函数中,这里为什么要禁用软中断,
        local_bh_disable();
        if (net->ct.expect_count) {
                spin_lock(&nf_conntrack_expect_lock);
                exp = nf_ct_find_expectation(net, zone, tuple);
                if (exp) {
                        pr_debug("conntrack: expectation arrives ct=%p exp=%p\n",
                                 ct, exp);
                        /* Welcome, Mr. Bond.  We've been expecting you... */
                        __set_bit(IPS_EXPECTED_BIT, &ct->status);



还有在__nf_conntrack_confirm插入hash表的时候也禁用了软中断,

        local_bh_disable();

        do {
                sequence = read_seqcount_begin(&net->ct.generation);
                /* reuse the hash saved before */
                hash = *(unsigned long *)&ct->tuplehash[IP_CT_DIR_REPLY].hnnode.pprev;
                hash = hash_bucket(hash, net);
                reply_hash = hash_conntrack(net, zone,
                                           &ct->tuplehash[IP_CT_DIR_REPLY].tuple);

        } while (nf_conntrack_double_lock(net, hash, reply_hash, sequence));


我感觉不需要禁用软中断啊,直接加锁就行了,本身就在软中断中执行。有熟悉的人指点下,谢谢!

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:13:29
发表于 2015-11-06 17:08 |显示全部楼层
同问,坐等大神回复

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
发表于 2015-11-09 14:58 |显示全部楼层
包路径上的代码会关闭bh,说明这段代码有可能被其他路径调用,是转发路径和控制路径的公共函数。
否则的确没有必要。

论坛徽章:
5
处女座
日期:2014-10-15 11:57:302015年亚洲杯之中国
日期:2015-03-04 17:05:552015亚冠之西悉尼流浪者
日期:2015-07-31 12:14:2915-16赛季CBA联赛之同曦
日期:2015-12-10 18:14:0615-16赛季CBA联赛之北京
日期:2016-07-07 17:01:53
发表于 2016-08-31 16:15 |显示全部楼层
可能是因为内部调用了NF_CT_STAT_INC做数据统计,需要禁止软中断,为什么不直接调用NF_CT_STAT_INC_ATOMIC?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP