SO_BINDTODEVICE Сбой для виртуального интерфейса

Я пытаюсь запустить сервер 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)

Мне нужно несколько указателей, чтобы преодолеть эту проблему. Любая помощь здесь приветствуется.

1 ответ

Решение

Я нашел решение этой проблемы. Но это не может быть идеальным решением. Я все еще открыт для предложений.

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

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

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

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

Другие вопросы по тегам