对arptbales进行扩展

起因是因为客户给我们报了一个BUG,说对VLAN的优先级做了设置后,IP包是对的,但是ARP包的优先级不对。首先做了一些通用的分析后,发现之前对优先级作设置是用的iptables。显然大家都知道。ARP包的发送完全是由linux内核控制的,不进入TCP/IPstack,显然对所挂的HOOK不会进行调用。我认为我已经找到了解决的方法了。就用ebtables对SKB打标记重新设置优先级,可奇怪的是还是不行。后面仔细研究了一下代码,并问了一下公司当时设计这一个模块的老员工。终于发现了问题所在。在设置静态IP时,代码并未将这个新建的虚拟接口加入到一个桥中。因此就算在ebtables中对二层包进行打标记也没有用。因为ARP的SKB根本不过你在EBTABLES中挂的HOOK。自然是想再建个桥再将口子加进去。可是由于历史原因和代码框架问题,行不通。没办法。只好来硬的。自已对ARP这一块的代码进行分析。本来是想用个全局变量做接口。然后用PROC与用户空间通信。发现这也太土了,无疑会形成传说中的“潜规则”,对以后新手分析代码会产生更大的障碍。因此我用了标准的接口。

在ARP的发包函数中内核本身挂了一个HOOK。因此我就把这一块代码给捞了一遍分析了一把,再把ARPTABLES的代码也给分析了一把。在已有的target中增加一个case。问题终于得到解决。前后总共花了七天时间。实话说,感觉netfilter的代码比arptables的代码还容易看一些。arptables里面乱七八糟的数据结构一堆一堆的。很是费力。

下次再把代码帖上。

真发现没人对iptables等开源软件自已做扩展。我打算把这个好好分析分析。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值