У меня есть несколько устройств Linux, каждое из которых имеет один или несколько экземпляров сервера. Все они подключены к одной группе многоадресной рассылки (с IP_ADD_MEMBERSHIP) и привязаны к одному и тому же порту (
Код: Выделить всё
SO_REUSEPORT). Клиенты отправляют сообщение в группу многоадресной рассылки и ожидают получить ответы от всех доступных серверов, включая один (или несколько) на том же хосте. Все работает хорошо, когда интерфейс LAN включен.
Когда интерфейс LAN не работает (без адреса), IP_ADD_MEMBERSHIP
завершается с ошибкой, если я не укажу интерфейс явно (с помощью imr_ifindex структуры ip_mreqn). Если я это сделаю, сокет будет успешно создан и когда интерфейс поднимется, весь трафик будет работать. Однако локальные сообщения в группу не будут доставлены до тех пор, пока не будет активирован интерфейс (до локальных экземпляров сервера).
Можно ли настроить многоадресные сокеты/маршруты в таким образом, сообщения на локальные серверы будут доставляться в случае отсутствия внешнего соединения?
Подробнее здесь:
https://stackoverflow.com/questions/791 ... connection