hi.stao 发表于 2011-12-22 18:52

在vlan_skb_receive中,最后怎么调用到了netif_rx了呢?这个函数会最终进入到硬件中断啊......

challengezcy 发表于 2011-12-25 20:43

d419192480 发表于 2011-10-26 17:15 static/image/common/back.gif
谢谢回复,可否细说一下
bridge--->vlan ? 这个过程 是在哪里发生的呢?
是在 br_handle_frame_finish 里面 ...

你大概没有注意到这个细节, VLAN eth0.1 和 eth0.2 是建立在eth0之上的,而eth0并没有加到桥当中,因此,在netif_receive_skb中,第一次进入到handle_bridge处理时,直接返回,因为
    if (skb->pkt_type == PACKET_LOOPBACK ||
      (port = rcu_dereference(skb->dev->br_port)) == NULL) //注意,第一次进来时,skb->dev是eth0
      return skb;
该条件成立(2.6.31代码),返回后,在netif_receive_skb中,查找到packet_type 为 0x8100 的 pt_prev->func(), 即调用vlan_skb_recv(), 去掉vlan tag 。。。

honkiko 发表于 2016-08-10 17:38

不同的vlan之间, 在二层是隔离的, 怎么可能在vlan之间直接bridge ?
页: 1 [2]
查看完整版本: Linux bridge 对802.1q包的处理