Определить, является ли IP статическим или получен от DHCP на busybox

Я работаю над встроенным устройством, на котором запущен BusyBox.
Система получает свой адрес с помощью команды ip. Я хочу выяснить из моей программы C, является ли IP-адрес устройства статическим или полученным с DHCP-сервера. Как мне это сделать?


person amitp    schedule 08.10.2009    source источник
comment
Я думаю, вам следует отредактировать свой вопрос, указав в первую очередь подробности того, как вы получаете IP-адрес. Я предполагал, что у вас запущен dhcp-клиент BusyBox, но это кажется неправильным.   -  person unwind    schedule 08.10.2009


Ответы (4)


Если вы управляете средой, я предлагаю установить переменную env или создать файл флага где-нибудь, где вы можете статистику, когда установлен IP-адрес.

person gnud    schedule 08.10.2009

Я не знаю, как ваши пользователи взаимодействуют с вашей встроенной системой. Но на нашем (тех же компонентах) у нас есть CLI, который регистрирует выбранный параметр типа DHCP / STATIC в структуре SHM (db) для каждого интерфейса.

По сути, вам нужно отслеживать, как был установлен IP-адрес интерфейса.

person Troglobit    schedule 27.05.2011

Команда dumpleases должна отображать текущие аренды. Я думаю, если вы можете определить, что у вас есть IP-адрес, но нет аренды, тогда адрес будет статическим.

person unwind    schedule 08.10.2009
comment
устройство получает свой адрес с помощью команды ip, а не udhcp, поэтому dumpleases не работает - person amitp; 08.10.2009

Взгляните на этот вопрос и проверьте флаг IFF_DYNAMIC - он может быть установлен, когда DHCP активен на интерфейсе.

person Adam Liss    schedule 08.10.2009
comment
IFF_DYNAMIC указывает коммутируемое устройство с изменяющимися адресами - person amitp; 08.10.2009
comment
в Solaris есть флаг IFF_DHCPRUNNING. Есть ли аналог для Linux? - person amitp; 08.10.2009