免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2576 | 回复: 8
打印 上一主题 下一主题

[通信方式] 防火墙模块如何用唤醒进程方式wake_up_interruptible()通知连接跟踪模块去做一些事情 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-27 15:00 |只看该作者 |倒序浏览
本帖最后由 hk_sean 于 2012-11-27 15:04 编辑

在防火墙策略模块中,当发生策略删除操作时,执行完删除策略后,需要通知连接跟踪模块删除和这条策略相关的连接跟踪项,可以直接调用函数pf_notice_ct()函数,去连接跟踪模块删除特定的表项,等待pf_notice_ct()函数执行完后,防火墙的删除策略动作正常返回。

当连接跟踪表项很大时,执行pf_notice_ct()可能会很耗时,删除策略的动作也会一直等待pf_notice_ct()执行完,才会返回。我想通过调用wake_up_interruptible()这个函数,去唤醒连接跟踪的进程去执行pf_notice_ct(),当pf_notice_ct()执行完,这个进程再睡眠,直到下一次防火墙策略模块调用wake_up_interruptible()。这样防火墙删除策略时就会很快返回,不会阻塞了。

现在问题是,wake_up_interruptible()里的参数怎么填,在netlink通信中是这样调用的wake_up_interruptible(nl_sk->sleep),而现在连接跟踪模块没有nl_sk这个参数啊,也需要执行nl_sk = netlink_kernel_create()去创建一个netlink的socket吗?将nl_sk定义为全局的,这样在防火墙模块直接调用wake_up_interruptible(nl_sk->sleep)吗?

因为对netlink和内核内部的通信不是很理解,所以请教大家一下。

论坛徽章:
0
2 [报告]
发表于 2012-11-27 15:22 |只看该作者
有20多人观看了,怎么没人解答一下呢?是不是我的问题问的不清楚?如果哪里不清楚,也请大家提示一下!!!

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2012-11-27 18:02 |只看该作者
回复 1# hk_sean
搞一个内核线程也可以吧


   

论坛徽章:
0
4 [报告]
发表于 2012-11-27 23:58 |只看该作者
  链接跟踪不是个进程,没有办法唤醒,搞个内核进程去执行也可以。

  wake_up是唤醒,对应的必须有sleep_on睡眠,wake_up会唤醒引等待某事而睡眠的进程,后面的参数是等待队列头。

  建议网上查下等待队列的资料

论坛徽章:
0
5 [报告]
发表于 2012-11-28 09:06 |只看该作者
回复 4# luoyan_xy


    感谢给的提醒,我也感觉连接跟踪不是进程,但有个想法就是在连接跟踪模块创建一个进程,然后专门处理我的业务,但不知道怎么去实现,也不知道这个思路对不对。

我先查查等待队列是如何使用。

论坛徽章:
0
6 [报告]
发表于 2012-11-28 09:08 |只看该作者
回复 3# Godbach


    群主啊,你要是知道怎么实现,把内核线程用到的函数针对我这个处理介绍一下呗,光说一个内核线程,我暂时找不到头绪啊。

论坛徽章:
0
7 [报告]
发表于 2012-11-28 10:06 |只看该作者
搞个内核线程或者work queue之类的都可以。

你去翻参考书上的 内核线程怎么创建的和信号量怎么用的就可以了。   这种东西查手册来的快啊,来这里问也没什么用,难道叫大家去抄一个来给你?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2012-11-28 13:45 |只看该作者
回复 6# hk_sean
具体的操作要靠你自己学习了。

论坛就是这样,不可能手把手指点给你所有东西。告诉一个可能解决问题的方法,你就可以自己去做调研和实践了。


   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
9 [报告]
发表于 2012-11-28 13:47 |只看该作者
回复 1# hk_sean
还有一个方法也可以尝试,就是在 conntrack 和 规则之间做一下关联,执行 conntrack 的时候,能够判断其对应的规则是否发生变化。如果发生变化了,就重新查规则。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP