当前位置:  开发笔记 > 运维 > 正文

Linux网络堆栈:使用LKM和dev_add_pack添加协议

如何解决《Linux网络堆栈:使用LKM和dev_add_pack添加协议》经验,为你挑选了0个好方法。

我最近一直在努力熟悉Linux网络堆栈和设备驱动程序(两者都有类似名称的O'Reilly书籍),最终目标是卸载UDP.我已经在网卡上实现了UDP,但现在很难实现......

我没有在这个更大的目标上寻求帮助,而是希望有人可以为我澄清一个特定的片段,我发现它是LKM的一部分,它注册了一个新的协议(OTP),充当设备驱动程序和网络堆栈之间的过滤器.

http://www.phrack.org/archives/55/p55_0x0c_Building%20Into%20The%20Linux%20Network%20Layer_by_lifeline%20&%20kossak.txt

(注意:这篇Phrack文章包含三个不同的模块,OTP的代码位于页面底部)

在他的例子的init函数中,他有:

    otp_proto.type = htons(ETH_P_ALL); 
    otp_proto.func = otp_func;
    dev_add_pack(&otp_proto);

哪个(如果我理解正确的话)应该将otp_proto注册为数据包嗅探器并将其放入ptype_all数据结构中.我的问题是关于dev_add_pack.

注册为过滤器的协议是否总是放在L2和设备驱动程序之间的这一层?或者,例如,我可以使用相同的过程在应用程序层和传输层之间进行这样的过滤(分析套接字参数)吗?

如果这令人困惑,我很抱歉 - 当涉及到改变内核堆栈功能的模块时,我在绕着更大的图片时遇到了一些麻烦.

谢谢

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有