【问题标题】:Where to get device type constants description?从哪里获取设备类型常量描述?
【发布时间】:2013-02-05 07:39:01
【问题描述】:

我正在通过 netlink 套接字获取有关系统网络设备的信息。 我正在解析ifinfomsg 结构中定义的三种消息类型RTM_NEWLINKRTM_DELLINKRTM_GETLINK

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 是以太网,772 是环回,但我想知道所有可能的值。 可能答案很明显,但谷歌不想告诉我任何有用的东西。

【问题讨论】:

    标签: c++ linux netlink


    【解决方案1】:

    看看/usr/include/net/if_arp.h,你会发现那里的常量是ARPHRD_*。如果您想让您的生活更轻松一些,如果您还没有使用它,请查看 libnl

    【讨论】:

    • 是的,甚至还有一个变换函数:Link Layer Type (16bit) 目前只用在内核→用户消息中,报告一个链路的链路层类型。该值对应于 中的 ARPHRD_* 定义。可以使用函数 nl_llproto2str()/nl_str2llproto() 完成从/到字符串的转换。
    • @ldx:愿意分享一下您在哪里发现的吗?
    • 我过去使用过 libnl。可能我必须深入研究源头,我不记得了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多