当前位置: 代码迷 >> 驱动开发 >> 请问一个Linux内核桥的有关问题
  详细解决方案

请问一个Linux内核桥的有关问题

热度:30   发布时间:2016-04-28 11:07:54.0
请教一个Linux内核桥的问题
我现在看的内核是2.6.34.8,在br_flood函数内看到如下的代码:

list_for_each_entry_rcu(p, &br->port_list, list) {
prev = maybe_deliver(prev, p, skb, __packet_hook);
if (IS_ERR(prev))
goto out;
}

maybe_deliver函数内又调用了should_deliver函数来判断是否应该转发。

我现在想到了一种情况,就是若在通过list_for_each_entry_rcu遍历br->port_list时,若p是收到此skb的端口,又恰好是br->port_list的第一个端口,是否有问题?

此时,maybe_deliver函数内的should_deliver判断不应该转发,导致maybe_deliver返回的prev还是NULL,IS_ERR判断出错,即直接goto out,但实际还有很多端口未遍历。

我想内核应该不会犯这么低级的错误,但始终没想明白。请各位大侠指导下!!谢谢!!

------解决方案--------------------
太难了,不懂