Так что я ищу, это индекс интерфейса (или имя), но реальный.
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)