Как программно редактировать таблицу маршрутизации - PullRequest
6 голосов
/ 15 апреля 2009

Я пишу демон, работающий на встроенной платформе, который должен изменить маршрут устройства по умолчанию в соответствии с тем, к какому интерфейсу он подключается в данный момент времени. Как я могу сделать это программно? Я знаю, что могу использовать систему («route del default && route add default gateway blah»); и т.д., но есть ли более прямой путь?

ОБНОВЛЕНИЕ: я решил свою конкретную проблему, обнаружив патч для pppd, который позволяет использовать параметр replacedefaultroute. Патч также включает в себя код для программного изменения таблицы маршрутизации. Он включен в отчет об ошибках Gentoo http://bugs.gentoo.org/227321

Ответы [ 3 ]

7 голосов
/ 15 апреля 2009

Проверьте SIOCADDRT / SIOCDELRT ioctls ("Сетевое программирование Unix" было бы хорошим справочником Стивенса.)

1 голос
/ 15 апреля 2009

Я набрал

man route

потому что я знаю, что иногда я могу получить подсказку в разделе "см. Также" о том, как сделать то же самое программно. Я увидел, что на странице 4 была страница справочника по «маршруту» (маршрут (4) был в разделе «см. Также»). Так пробовал

man 4 route

и это выглядело многообещающе для того, чтобы делать то, что команда маршрута может делать программно.

Примечание Я только что заметил, что это только для систем BSD. Вот URL с справочной страницей http://www.manpagez.com/man/4/route/. Это может или не может быть полезным. Может быть, вы можете погуглить некоторые вещи здесь и добавить слово «linux».

0 голосов
/ 15 апреля 2009

Я бы порекомендовал просто использовать эту команду маршрута. Вот для чего он, и все остальное будет просто взломать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...