Существует ли существующая библиотека Linux / POSIX C / C ++ или пример кода для перепривязки сокета с одного физического интерфейса на другой?
Например, у меня есть ping-передача по сокету, который связан с физическим соединением A, и я хочу повторно привязать этот сокет к физическому соединению B и продолжить отправку и прием пакетов ping по соединению B (после небольшой задержки во время переключения).
Мне это нужно только для протоколов без сессий.
Спасибо
Обновление:
Я пытаюсь предоставить отказоустойчивое решение для использования с устройствами PPP и Ethernet.
У меня есть базовый сценарий, который может реализовать 90% функциональности за счет использования iptables, NAT и таблицы маршрутизации.
Проблема заключается в том, что когда происходит аварийное переключение, эхо-запросы продолжают отправляться по вторичному соединению, однако их исходный IP-адрес получен из старого соединения.
Я говорил с парой людей, которые работают на коммерческих маршрутизаторах, и они предлагают повторно привязать сокет к вторичному интерфейсу.
Обновление 2:
Прошу прощения, что не уточнил это ранее. Это решение будет работать на маршрутизаторе. Я не могу изменить программу ping, потому что она будет работать на клиентском компьютере. Я использовал ping в качестве примера, любое соединение, которое не основано на сеансах, должно быть способным к переключению. Я протестировал эту функцию на нескольких коммерческих маршрутизаторах, и она работает. К сожалению, их программное обеспечение является проприетарным, однако из различных разговоров и испытаний я обнаружил, что они перепривязывают сокеты при отработке отказа.