2013-03-19 713 views
1

我想运行PTPDV2(精确计时协议)服务器,它在接口上绑定以设置多播。SO_BINDTODEVICE虚拟接口失败

我有以下虚拟接口

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

还是没有答案? – rajshenoy 2013-03-21 02:45:33

回答

0

我找到了解决这个问题的方法。但它可能不是完美的解决方案。我仍然乐于提供建议。

我观察到套接字绑定成功,所以套接字得到eth1:0的IP地址。但是SO_BINDTODEVICE失败了,因为这是一个虚拟接口。

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

哪个这样,我不再被阻止,因为响应通常对我来说是单播的。但是如果有人希望接收多播支持,这可能无法完美工作。

征求意见