LINUX.ORG.RU

Как по ifindex определить на какой шине и порту «висит» USB-сетевая карта?

 ,


1

2

Здравствуйте,

Задача следующая: я работаю с несколькими USB-сетевыми картами, и получаю IP-пакет, определяю с какого интерфейса он получен, т.е. я знаю ifaceName и ifaceIndex, и мне нужно определить «физически» с какой карты пришел пакет, подскажите как более правильно и быстро узнать на какой шине и порту «висит» карточка?

Интересуют варианты на Си, (если можно то на Qt) и из командной строки.



Последнее исправление: NVN (всего исправлений: 2)

Из командной строки можно вот так попробовать

udevadm info -q all -p /sys/class/net/[имя сетевого интерфейса] |grep DEVPATH
alx777 ★★
()

А вообще наверное проще всего будет присвоить твоим карточкам постоянные имена в зависимости от MAC адресов с помощью udev:

cat /etc/udev/rules.d/70-persistent-net.rules
...
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", NAME="my-cool-eth-usb-port-0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:56", NAME="my-cool-eth-usb-port-1"
...
alx777 ★★
()
Ответ на: комментарий от alx777

Спасибо огромное!

присвоить не получиться, т.к. устройств тысячи, и сетевые карты втыкаются не мной, и всегда разные могут быть.

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

присвоить не получиться

Отчего же не получится ? А если так:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", DEVPATH=="*/usb4/4-3/4-3:1.0/net/*", NAME="my-cool-eth-usb-port-0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", DEVPATH=="*/usb2/2-1/2-1.5/2-1.5:1.0/net/*", NAME="my-cool-eth-usb-port-1"
alx777 ★★
()
Ответ на: комментарий от I-Love-Microsoft

Кто же будет присваивать уникальные cool-имена каждый раз? Папа римский?

Папа римский — вряд ли, задача все-таки демоническая

udev более подходящий кандидат

все что воткнуто в USB порт с DEVPATH==«*/usb4/4-3/4-3:1.0/net/*» будет называться «my-cool-eth-usb-port-0», а с DEVPATH==«*/usb2/2-1/2-1.5/2-1.5:1.0/net/*» — «my-cool-eth-usb-port-1»

alx777 ★★
()
Ответ на: комментарий от alx777

Кто гарантирует usb2 3 4 на произвольной системе? Ведь это предварительно тоже нужно будет знать «присвоить не получиться, т.к. устройств тысячи, и сетевые карты втыкаются не мной, и всегда разные могут быть»

Мне что-то подсказывает, что */usbX/Y-Z вот эти X Y Z вообще с потолка будут браться.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Я все-таки надеюсь что в рамках одной машины пути к USB-портам не меняются и достаточно один раз экспериментальным путем определить какой порт где. Хотя я это городил на эмбеддщине где конфигурация гвоздями прибита, а на PC стоит, конечно, это дело проверить

Если же пути к физическим USB портам каждую загрузку в самом деле по-новому енумерируются то DEVPATH ТСу вряд ли чем поможет

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