我正在尝试运行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)
我需要一些指针来克服这个问题。感谢您的任何帮助。
答案 0 :(得分:1)
我找到了解决此问题的方法。但它可能不是完美的解决方案。我仍然愿意接受建议。
我发现套接字绑定成功,因此套接字确实获得了eth1:0的IP地址。但是SO_BINDTODEVICE失败了,因为这是一个虚拟接口。
所以我决定在真实接口eth1上调用SO_BINDTODEVICE,因为eth1:0和eth1共享相同的MAC。
对此,我不再被阻止,因为对我来说回复通常是单播的。但是,如果有人在接收时也希望获得多播支持,这可能无法正常工作。
公开提示