2012-02-15 63 views
2

我创建了一个原始套接字,用于在具有两个桥接在一起的接口(eth0,eth1)的计算机上接收和转发。在原始套接字中禁用网桥转发

socket(AF_PACKET, SOCK_RAW, 0xabcd); 

我的协议会发送一些广播数据包,我想我自己转发它。

如何禁用转发我的特定数据包?

回答

0

经过数周的工作,我修改了我的驱动程序,并通过netlink将特定数据包转发给用户地。 特定的数据包在被转发后被丢弃,所以桥接器不会为我转发这些数据包。

0

听起来像你可以使用iptables/ebtables来停止通过网桥的转发,并在你的程序中使用libpcap来获取你想用你的程序转发的数据包/帧。这可能有些冒昧,但是libpcap可以只提供想要收听的数据包,而不管机器防火墙/网桥转发规则如何。

也有一些iptables的目标,将提供匹配的数据包到用户空间。您可能可以使用它们将它们递送到内核中,并将其交给应用程序重新传输。