Так что я ищу, это индекс интерфейса (или имя), но реальный.
if_nametoindex(3)
и ioctl(2)
, похоже, не поможет мне здесь. Теперь я нашел единственный способ сделать это через /sys
. Позвольте мне продемонстрировать на примере, что мне нужно:
# cat /sys/class/net/bond0.1007/ifindex
26
# cat /sys/class/net/bond0.1007/iflink
23 <-- I need either this or a reference to bond0
# cat /sys/class/net/bond0/ifindex
23
Есть ли способ сделать это с помощью вызова функции или единственный способ sysfs
?
Смотрите также
—
Стефан Шазелас
/proc/net/vlan/config
или /proc/net/vlan/bond0.1007
это интерфейс VLAN.
@ StéphaneChazelas Спасибо. Я решил продолжать использовать
—
UVV
/sys
. /proc
или /sys
более или менее одинаковы в этом смысле. Я просто хотел проверить, есть ли системный вызов для получения такой информации, оказывается, что нет.
системными вызовами будет sendmsg / recvmsg, использующий API сокета netlink.
—
Стефан Шазелас
Документация по rtnetlink: man7.org/linux/man-pages/man7/rtnetlink.7.html - выдача
—
Ecatmur
RTM_GETLINK
сообщения и поиск IFLA_LINK
атрибута в ответе.
ip link show
делает (вероятно, используя API NetLink)