2013-03-19 2 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

ответ

0

Я нашел обходной путь к этой проблеме. Но это не может быть идеальным решением. Я по-прежнему открыт для предложений.

Я заметил, что сокет привязывается успешно, поэтому сокет получает IP-адрес eth1: 0. Но SO_BINDTODEVICE терпел неудачу, поскольку это был виртуальный интерфейс.

Итак, я решил вызвать SO_BINDTODEVICE на реальном интерфейсе, который является eth1, поскольку оба eth1: 0 и eth1 используют один и тот же MAC.

Что это, я больше не заблокирован, так как ответы типично одноадресные для меня. Но это может не сработать, если кто-то хочет получать многоадресную поддержку при получении.

Открыт для предложений