2

我正在尝试运行绑定在接口上以设置多播的 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)

我需要一些指示来克服这个问题。任何帮助在这里表示赞赏。

4

1 回答 1

1

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

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

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

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

公开征求意见

于 2013-03-21T02:48:30.853 回答