Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20936
  • 博文数量: 2
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-23 12:14
文章分类

全部博文(2)

文章存档

2014年(1)

2012年(1)

我的朋友

分类: LINUX

2014-05-09 15:43:59

1.
netfitler/iptables提供了QUEUE动作,在内核中由ip_queue模块完成动作的处理;
netfitler/iptables扩展模块NFQUEUE ,在内核中由xt_NFQUEUE和nfnetlink_queue完成动作的处理。

2.
ip_queue在加入内核时,调用nf_register_queue_handler()向系统queue_handler数组注册一个处理ipv4协议的数据包处理函数;
而使用NFQUEUE,则需要应用层调用nfq_bind_pf()来向系统queue_handler数组注册一个处理ipv4协议的数据包处理函数。                

3.匹配到数据包后,内核处理过程如下:
 nf_hook_slow()->nf_queue()->__nf_queue()->qh = rcu_dereference(queue_handler[pf])  
 此时,系统中若是ip_queue注册的处理ipv4数据包的函数,则调用ip_queue的处理函数ipq_enqueue_packet();若是nfnetlink_queue注册的处理ipv4数据包的函数,则调用nfnetlink_queue的处理函数nfqnl_enqueue_packet()。
 此时,就可区分将包导入ipqueue还是nfqueue。
                                                              
                                  
                                                                                                                                                                                                                                                                                                                                                                                                                            
                                                         
阅读(4307) | 评论(0) | 转发(0) |
0

上一篇:Linux 2.6.35 新增特性 RPS RFS

下一篇:没有了

给主人留下些什么吧!~~