2012-02-28 4 views
3

Как программировать (C) знать, если данный интерфейс имеет статический адрес или номер предоставлен dhcp? Я могу посмотреть /var/db/dhclient.leases.<interface_name>. Любой лучший/более чистый способ? any ioctl Я могу использовать?FreeBSD: адрес сетевого интерфейса: dhcp или статический

+0

Я не думаю, что сетевые интерфейсы записывают, как их адрес установлен. –

ответ

2

Прочитано /etc/rc.conf. Найдите строки, начинающиеся с ifconfig и посмотрите, какие из них содержат текст DHCP.

Это не приведет к перехвату интерфейсов, которые были повторно настроены путем запуска dhclient вручную. В этом отношении анализ файла лизинга будет работать лучше, если его разрешения позволят вашей программе читать его.

+0

Спасибо, ronald. хакинг вокруг - путь. Думаю. – hari

2

Короткий ответ - нет, нет. Клиент dhcp устанавливает адрес интерфейса и т. Д., Используя те же механизмы, что и ifconfig. Нет специального флага или другого указания, которое оно оставляет, чтобы сообщить вам, что интерфейс был динамически настроен.

Я бы проверял файлы конфигурации в/etc /, а не на аренду, но да, вам нужно будет что-то взломать, чтобы узнать информацию.

0

В дополнение к проницательному совету роллы и перри я бы добавил: если rc.conf НЕ настроен на использование dhcp, это не означает, что он не вызывался из командной строки.

Если вы видите, что он работает, есть хороший шанс, что интерфейс получает свой адрес.

pgrep dhclient