Просто используйте файловый дескриптор открытого сокета, используя имя устройства в структуре ifreq
, переданное ioctl()
, при условии, что ваша программа имеет соответствующие разрешения для этого.
Из документов:
Linux поддерживает некоторые стандартные ioctl для
настроить сетевые устройства. Они могут
использоваться в любом файле сокета
дескриптор независимо от семьи или
тип. Они передают структуру ifreq:
Сокет не обязательно должен быть привязан к целевому устройству или принадлежать к какой-либо конкретной семье. Подойдет любой открытый сокет fd (опять же, с соответствующими привилегиями), просто откройте один для вашей конкретной задачи, дождитесь, пока ioctl()
вернется и закройте его.
См. man 7 netdevice
для получения дополнительной информации или здесь , если у вас не установлены соответствующие пакеты документации (подсказка, пакет обычно называется manpages-dev
или manpages-devel
, в зависимости от вашего дистрибутива)
Вы также можете взглянуть на исходный код пакета net-tools
, который может называться по-разному в зависимости от вашего дистрибутива. Это источник ifconfig
(Debian / Ubuntu здесь).
Извините за оригинальную двусмысленность, я думал, что вы пытаетесь настроить специальное многофункциональное устройство (не знаю, почему сейчас, возможно, не хватает сна).