加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux内核实践 - 如何添加网络协议[三]:实现

发布时间:2016-09-29 15:43:25 所属栏目:Linux 来源:站长网
导读:副标题#e# 内核版本:2.6.34 接上篇《添加网络协议》。 为了用户方便查看brcm设备的工作状态,使用proc文件系统是很好的方 式。一个网络协议模块可以注册到网络空间中register_pernet_subsys(),这个函数会为子空间分配一个id号,通过id可以在网 络空间中找

到这里,协议的添加就大致完成了,当然还包括一些头文件的修改,宏变量的添加等就不一一详述,具体可见最后的附件。

为了编译进内核,还需要修改以下文件:

$(linux)/net/Kconfig  $(linux)/net/Makefile

最后,在make menuconfig选择添加brcm协议

Networking Support -> Networking options

Linux内核实践 - 如何添加网络协议[三]:实现

同时,需要一个简单 的用户空间工具来配置我们的brcm设备,就像vconfig用来配置vlan设备一样;编写的简单的bconfig工具,命令格式:

"Usage: add [interface-name] [brcm_port]n"

"       rem [dev-name]";

内核编译完成后就该进行测试了,如果开启了内核调 试信息,启动内核就看到以下信息:

Linux内核实践 - 如何添加网络协议[三]:实现

然后启用网卡,可以查看到添加了brcm设备后的状态:

Linux内核实践 - 如何添加网络协议[三]:实现

可以使用原生套接字自己打上brcm头后发送报文让协议栈接收,或者用wireshark等捕获协议栈发出的报文,下图即是捕获到 的报文:

Linux内核实践 - 如何添加网络协议[三]:实现

这是主机发出的arp报文,可以看到,在源mac后接的不是vlan报头,而是我们添加的brcm报文,协议号是8744。

查看proc 中信息:

Linux内核实践 - 如何添加网络协议[三]:实现

附:patch补丁 && 重要的源文件 && bconfig工具源码

http://download.csdn.net/source/3548117

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读