LINUX.ORG.RU

linux c++ список доступных сетевых карт


0

0

Господа, не откажите в любезности.

ОС linux, язык с++ Есть задача — отобразить список доступных в системе сетевых карт и связанных с ними интерфейсов.

Собственно, список интерфейсов добывается довольно легко, через if_nameindex(), но здесь столкнулся с проблемой — не всякий интерфейс привязан к сетевой карте (напр. интерфейс VirtualBox`а).

Вопрос: как определить, является ли данный интерфейс "физическим", связанным с конкретной сетевой картой.

Теперь — второе. Хотелось бы, чтобы список включал в себя информацию о модели сетевой карты. В принципе, можно посмотреть исходники lspci. Но. lspci, насколько я могу судить, не определяет интерфейс, связанный с сетевой картой, а просто сканирует /proc, выбирает из файла коды устройства и ищет их по своей базе, выдавая тип устройства, имя производителя, модель и т.д.

Как быть? Возможно, у кого-то найдутся соображения по этому поводу?

Заранее — спасибо.

Смотри /sys/class/net, оттуда все достать можно.

mqspi
()

> Есть задача — отобразить список доступных в системе сетевых карт и связанных с ними интерфейсов.

А можно узнать - зачем это нужно?

Deleted
()

man netdevice man ioctl

Должны заинтересовать ioctl'ы: SIOCGIFMAP, SIOCGIFCONF и многие другие

verzhak
()

Большое всем спасибо за ответы. Вы сильно помогли мне.

Итак, получившийся у меня в итоге метод решения данной проблемы (для ядер 2.6 и выше):

1.Читаем /sys/class/net Здесь каждый каталог соответствует сетевому интерфейсу 2.Читаем каждый каталог интерфейса из /sys/class/net 3.Если каталог интерфейса содержит подкаталог-ссылку "device", следовательно данный интерфейс связан физическим устройством (что нам и нужно). 4.Читаем каталог "device" данного подкаталога, выбираем из него файлы "vendor" и "device". 5.Читаем из "vendor" код производителя и из "device" - код имени устройства. 6.Ищем полученные коды в файле /usr/share/pci.ids, и считываем имена производителя и самого устройства. (Файл /usr/share/pci.ids используется "lspci", пакет "pciutils")

Еще раз большое спасибо, господа.

xander_58r
() автор топика
Ответ на: комментарий от Deleted

пишу программу тестирования соединения (наподобие ping, но попроще)

xander_58r
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.