Я получаю информацию о системных сетевых устройствах через сокет netlink.
Я анализирую три типа сообщений RTM_NEWLINK
, RTM_DELLINK
, RTM_GETLINK
определены в ifinfomsg
состав.
struct ifinfomsg {
unsigned char ifi_family; /* AF_UNSPEC */
unsigned short ifi_type; /* Device type */
int ifi_index; /* Interface index */
unsigned int ifi_flags; /* Device flags */
unsigned int ifi_change; /* change mask */
};
определение отсюда http://www.kernel.org/doc/man-pages/online/pages/man7/rtnetlink.7.html
Но нет описания для поля типа устройства ifi_type
где можно найти константы, описывающие возможные значения?
нет описания даже здесь
http://www.foxprofr.com/rfc/RFC3549-LINUX-NETLINK-AS-AN-IP-SERVICES-PROTOCOL/3549.aspx
Теперь я знаю, что 1
это Ethernet и 772
это петля, но я хотел бы знать все возможные значения.
Может быть, ответ очень очевиден, но Google не хочет рассказывать мне что-нибудь полезное.
Взгляни на /usr/include/net/if_arp.h
, вы найдете там константы как ARPHRD_*
, Если вы хотите сделать свою жизнь несколько проще, проверьте libnl если вы не используете его уже.
Других решений пока нет …