免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2643 | 回复: 4
打印 上一主题 下一主题

[内核入门] 3.4版的内核handle_bridge函数没有了,二层处理的入口在哪? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-27 16:13 |只看该作者 |倒序浏览
       以前用的是2.6.30的内核,二层数据在桥里的处理入口是handle_bridge函数,然后后面用一个函数指针调到br_handle_frame,现在在3.4版的内核里没有啦!!!
     以前我有段代码,是在handle_bridge里检查一下数据类型,如果是A类型,就会直接返回,不进入桥。
     现在这段代码想移植到3.4的内核中。。。。。我该移植到哪儿呢?

     搜了一下,3.4版把桥的入口函数br_handle_frame,放到br_add_if 函数里的赋值了。赋给了 dev->rx_handler_data 变量。。。。。
     

论坛徽章:
0
2 [报告]
发表于 2013-09-29 09:10 |只看该作者
本帖最后由 oscarvei 于 2013-09-29 09:14 编辑

刚发现,楼主自己搞定了。

论坛徽章:
0
3 [报告]
发表于 2013-09-29 10:16 |只看该作者
oscarvei 发表于 2013-09-29 09:10
刚发现,楼主自己搞定了。


     你是说 “ 搜了一下,3.4版把桥的入口函数br_handle_frame,放到br_add_if 函数里的赋值了。赋给了 dev->rx_handler_data 变量。。。。。”这句吗?我虽然找到了新的函数指针的入口,但这种写法完全和我以前理解的2.6.30的数据处理流程不同。
   我不知道在什么情况下,这个 dev->rx_handler_data  会被调用。
   如果我要在数据进入二层处理前拦一下,我应该在哪儿拦呢? 以前我还知道可以在 handle_bridge 这个函数的位置拦,现在完全不知道了。。。。

论坛徽章:
0
4 [报告]
发表于 2013-09-29 17:45 |只看该作者
回复 3# jiahehao01


    在某个interface被加入桥之后,bridge会注册rx_handler为br_handle_frame. 这样当那个interface上调用__netif_receive_skb_core()的时候,kernel会检测是否有rx_handler,如果有就就证明这个interface是bridge的一个port。并且调用br_handle_frame().


论坛徽章:
0
5 [报告]
发表于 2013-09-29 19:19 |只看该作者
回复 4# crspo

     兄台赐教,不胜感谢。看代码也去。。。。。。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP