网站大量收购闲置独家精品文档,联系QQ:2885784924

Netfilter框架的设计与实现.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Netfilter框架的设计与实现 什么是Netfiler Linux 从2.4.X 开始,引入了Netfilter,代替了原来的ipchain,什么是Netfilter呢?有人将它称为“Linux下一个优秀的防火墙工具”,这样 讲,有一定的道理,但是却是很片面的。Netfilter 更准确地讲是Linux 内核中,一个包过滤框架,默认地,它在这个框架上实现了包过滤、状态检测、网络地址转换和包标记等多种功能,因为它设计的开放性,任何有内核开发经验的开 发人员,也可以很容易地利用它提供接口,在内核的数据链路层、网络层,实现自己的功能模块。Netfilter的用户空间管理工具,是著名的 iptables 工具套件。 Netfilter框架之所以能实现许多强大的功能,是因为它在内核若干网络转发的关键函数,设计了许多巧妙的钩子函数,比如数据转发,由两个主要函数A 和B函数实现,流程为A-B ,现在改变为A-钩子函数-B,就这么简单,在本章里,就让我们来看看Netfilter框架的设计与实现。 从NF_HOOK 谈起 在整个Netfilter中,NF_HOOK宏占有重要的作用,它定义在Netfilter.h中: CODE: /* This is gross, but inline doesnt cut it for avoiding the function call in fast path: gcc doesnt inline (needs value tracking?). --RR */ #ifdef CONFIG_NETFILTER_DEBUG #define NF_HOOK(pf, hook, skb, indev, outdev, okfn) \ ({int __ret; \ if ((__ret=nf_hook_slow(pf, hook, (skb), indev, outdev, okfn, INT_MIN)) == 1) \ __ret = (okfn)(skb); \ __ret;}) #define NF_HOOK_THRESH(pf, hook, skb, indev, outdev, okfn, thresh) \ ({int __ret; \ if ((__ret=nf_hook_slow(pf, hook, (skb), indev, outdev, okfn, thresh)) == 1) \ __ret = (okfn)(skb); \ __ret;}) #else #define NF_HOOK(pf, hook, skb, indev, outdev, okfn) \ ({int __ret; \ if (list_empty(nf_hooks[pf][hook]) || \ (__ret=nf_hook_slow(pf, hook, (skb), indev, outdev, okfn, INT_MIN)) == 1) \ __ret = (okfn)(skb); \ __ret;}) #define NF_HOOK_THRESH(pf, hook, skb, indev, outdev, okfn, thresh) \ ({int __ret; \ if (list_empty(nf_hooks[p

文档评论(0)

14576 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档