Приветствую. Понадобилось для одного embedded девайса делать VLAN discovery, то есть когда девайс заранее не знает c каим VlanID нужно конфигурировать интерфейс, но может его выяснить средствами dhcp, сохранить в persistent memory и в следующий раз пользоваться сохраненным VlanID. DHCP потому, что устройство специфическое и ничего другого нет.
Для этого я решил использовать dhclient-script, который выполняется клиентом в определенных «точках». Скрипту передаются различные переменные, например $reason и пр. - BOUND (получили адрес), RENEW (обновили), TIMEOUT/FAIL (не удалось получить ответ от dhcp сервера) и т.д.:
-
конфигурируем порт с VlanID=2 (вроде как ID=1 зарезервирован)
-
пробуем послать DHCPDISCOVER
-
не удается -> вызывается скрипт в «точке» TIMEOUT
-
конфигурируем порт с VlanID=3 и идем на шаг 2
-
и так далее до тех пор пока не получим DHCPOFFER (то есть dhclient-script будет вызван с $reason=BOUND), значит определили VlanID, записали его в файл для след. раза.
Понятно что будет работать медленно, но авто-дискавери будет делаться только самый первый раз когда устройство совсем «голое».
Мне интересно, может быть есть какие-то альтернативные решения? Спасибо!