免费注册 查看新帖 |

Chinaunix

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

[网络子系统] 网桥同一个端口下的转发处理 [复制链接]

论坛徽章:
1
摩羯座
日期:2014-05-07 11:21:33
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-12 17:38 |只看该作者 |倒序浏览

    在查看linux2.6.36 网桥代码时,先假设关闭CONFIG_BRIDGE_NETFILTER,跟踪源码时发现
从br_handle_frame进入到达br_handle_frame_finish,然后进行转发处理br_forward(dst->dst, skb, skb2);


static inline int should_deliver(const struct net_bridge_port *p,
                                 const struct sk_buff *skb)
{
        return (((p->flags & BR_HAIRPIN_MODE) || skb->dev != p->dev) &&
                p->state == BR_STATE_FORWARDING);
}


那么此时将不满足skb->dev != p->dev,最终会将kfree掉这个skb,如此相当于丢弃。但是我在做如下实验时,mac1到mac2是可以通的,并且从打印中看到数据包确实在此处判断后kfree掉


                br0
                 
                eth1
        mac1       mac2


请教大神们为什么网桥代码会有这样一个判断??我做的实验又如何解释,有其他的处理流程吗,

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP