SO_BINDTODEVICE虚拟接口失败

时间:2013-03-19 14:29:47

标签: linux udp setsockopt

我正在尝试运行PTPDV2(精确计时协议)服务器,该服务器绑定在接口上以设置多播。

我有一个以下虚拟界面

eth1:0    Link encap:Ethernet  HWaddr 00:00:50:A0:42:BD  
          inet addr:10.2.0.17  Bcast:10.2.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Base address:0xa000

现在,我没有任何问题绑定到普通接口,但对于任何虚拟接口我都会失败。

 (ptpd debug1)   09:28:12.995509  (init)  netInit
 (ptpd debug1)   09:28:12.996254  (init)  Local IP address used : 10.2.0.17 
 (ptpd error)    09:28:12.997099  (init)  failed to call SO_BINDTODEVICE on the interface (strerror: No such device)

我需要一些指针来克服这个问题。感谢您的任何帮助。

1 个答案:

答案 0 :(得分:1)

我找到了解决此问题的方法。但它可能不是完美的解决方案。我仍然愿意接受建议。

我发现套接字绑定成功,因此套接字确实获得了eth1:0的IP地址。但是SO_BINDTODEVICE失败了,因为这是一个虚拟接口。

所以我决定在真实接口eth1上调用SO_BINDTODEVICE,因为eth1:0和eth1共享相同的MAC。

对此,我不再被阻止,因为对我来说回复通常是单播的。但是,如果有人在接收时也希望获得多播支持,这可能无法正常工作。

公开提示