LINUX.ORG.RU

программное управление сетевым интерфейсом под Linux


0

0

Доброго дня всем!

Есть задача: програраммное управление сетевым интерфейсом под Linux, и есть очень мало времени на ее решение.

Конкретно: надо программно добавить/поменять ip адрес/маску интерфефейса. Смотрел исходники утилиты ip - запутался :( Google не помог... Никто не подскажет, как решить проблему хотя бы приблизительно? Ссылку может какую или в какую сторону копать? Я так понял, что ioctl() и sysctl() здесь не помощники... Спасибо всем заранее... ЗЫ просмотреть исходники ifconfig просьба не предлагать.

anonymous

я конечно могу сморозить глупость... но чем плох прямой, тупой вариант - через командную сроку?

Pi ★★★★★
()

ИМХО, исходники ip достаточно простые, интерфейс с ядром через NetLink socket. Программа открывет этот сокет и передает/принимет сетевые настройки в виде двоичных структур.

С адресом интерфейса работает ipaddress.c, и если уж на то пошло, что нужно обязательно на Си и быстро, можно взять куски из исходников ip, начиная с "int do_ipaddr(int argc, char **argv)" и ей кормить строку типа "add 192.168.2.2/24 dev eth0".

P.S. ifconfig, вроде бы, работате через с ядром через другой интерфейс (ioctl() и sysctl()), поэтому сначала определись, что тебе надо...

mky ★★★★★
()
Ответ на: комментарий от mky

Насчет NetLink я понял. Но где бы почитать про работу с этим видом сокетов? Как через них управлять системой? Про ioctl() и sysctl() информации навалом, а по NetLink сокетам - шаром покати... Напрямую do_ipaddr(...) использовать нежелательно по двум причинам: 1. он выводит сообщения об ошибках в stdout 2. он иногда вызывает exit(...) что никак недопустимо

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.