我们的场景如下:建立TCP连接后(我们可以在tcp_set_state()
函数中查看),我们可以通过net_device
找到此连接的出口sk->sk_dst_cache->dev
。使用此net_device
,我们可以将net_device
与系统上的其他net_device
区分开来。
当出口设备是网桥的子接口时,此方法失败,因为sk->sk_dst_cache->dev
始终指向网桥。如果我们目前处于第4层,是否有可能在桥下获得真正的net_device
(struct net_bridge_port
)。
任何建议都表示赞赏。谢谢和最诚挚的问候。
答案 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);
当然,这仍然没有告诉你数据包中的哪个成员接口,但是不知道为什么你正在尝试这样做的任何事情我不能说是否这是一个问题。