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.
Который это, я больше не заблокирован, поскольку ответы, как правило, являются одноадресными для меня. Но это может не сработать, если кому-то тоже нужна поддержка многоадресной рассылки.
Открыт для предложения