2012-02-15 61 views
2

我創建了一個原始套接字,用於在具有兩個橋接在一起的接口(eth0,eth1)的計算機上接收和轉發。在原始套接字中禁用網橋轉發

socket(AF_PACKET, SOCK_RAW, 0xabcd); 

我的協議會發送一些廣播數據包,我想我自己轉發它。

如何禁用轉發我的特定數據包?

回答

0

經過數週的工作,我修改了我的驅動程序,並通過netlink將特定數據包轉發給用戶地。 特定的數據包在被轉發後被丟棄,所以橋接器不會爲我轉發這些數據包。

0

聽起來像你可以使用iptables/ebtables來停止通過網橋的轉發,並在你的程序中使用libpcap來獲取你想用你的程序轉發的數據包/幀。這可能有些冒昧,但是libpcap可以只提供想要收聽的數據包,而不管機器防火牆/網橋轉發規則如何。

也有一些iptables的目標,將提供匹配的數據包到用戶空間。您可能可以使用它們將它們遞送到內核中,並將其交給應用程序重新傳輸。