我正在尝试运行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)我需要一些指针来克服这个问题。感谢您在这里提供的任何帮助。
发布于 2013-03-21 10:48:31
我找到了解决此问题的方法。但这可能不是完美的解决方案。我仍然乐于接受大家的建议。
我观察到套接字绑定成功,因此套接字确实获得了eth1:0的IP地址。但是SO_BINDTODEVICE失败了,因为这是一个虚拟接口。
所以我决定在实际的接口上调用SO_BINDTODEVICE,即eth1,因为eth1:0和eth1共享相同的介质访问控制。
这一次,我不再被阻止,因为响应通常对我来说是单播的。但是,如果有人想要在接收时也支持多播,那么这可能不会完美地工作。
公开征求意见
https://stackoverflow.com/questions/15502242
复制相似问题