Получить дескриптор файла IOCTL для порта Ethernet

StackOverflow https://stackoverflow.com/questions/3047651

  •  27-09-2019
  •  | 
  •  

Вопрос

Мне нужно получить дескриптор файла для использования в IOCTL () вызовах для порта Ethernet в Linux. Не уверен, как это сделать.

Это было полезно?

Решение

Просто используйте дескриптор файла открытого розетки, используя имя устройства в ifreq структура передана ioctl(), При условии, что ваша программа имеет адекватные разрешения для этого.

Из документов:

Linux поддерживает некоторые стандартные IOCTL для настройки сетевых устройств. Их можно использовать на каком-либо дескрипте файлов сокета независимо от семьи или типа. Они передают структуру IFREQ:

Гнездо не нужно связаться с целевым устройством, либо иметь какую-либо конкретную семью. Любой открытый сокет FD будет делать (снова с соответствующими привилегиями), просто открыть для вашей конкретной задачи, подождите ioctl() вернуться и закрыть его.

Видеть man 7 netdevice для большего количества, или здесь Если у вас нет соответствующих пакетов документации (подсказка, пакет обычно называется manpages-dev или manpages-devel, в зависимости от вашего дистрибутива)

Вы также можете взглянуть на источник в net-tools Пакет, который может быть назван по-разному в зависимости от вашего дистриба. Это источник ifconfig (Debian / Ubuntu здесь).

Извините за оригинальную двусмысленность, я думал, что вы пытаетесь настроить специальное многофункциональное устройство (не уверены, почему сейчас, возможно, отсутствие сна).

Другие советы

Вы можете сделать что-то вроде этого fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP)

Использовать strace Чтобы увидеть, какие функции ifconfig. звонки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top