在第4层获得桥下的真实net_device

时间:2012-04-09 14:28:59

标签: linux linux-kernel linux-device-driver

我们的场景如下:建立TCP连接后(我们可以在tcp_set_state()函数中查看),我们可以通过net_device找到此连接的出口sk->sk_dst_cache->dev。使用此net_device,我们可以将net_device与系统上的其他net_device区分开来。

当出口设备是网桥的子接口时,此方法失败,因为sk->sk_dst_cache->dev始终指向网桥。如果我们目前处于第4层,是否有可能在桥下获得真正的net_devicestruct net_bridge_port)。

任何建议都表示赞赏。谢谢和最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

struct net_bridge有一个成员端口列表port_list。该列表包含struct net_bridge_port个元素,而这些元素又包含struct net_dev

您可以从桥梁的struct net_bridge轻松获取struct net_device

struct net_bridge *br = netdev_priv(dev);

当然,这仍然没有告诉你数据包中的哪个成员接口,但是不知道为什么你正在尝试这样做的任何事情我不能说是否这是一个问题。