【问题标题】:Using rtnetlink, reply message type to RTM_GETROUTE message?使用 rtnetlink,回复消息类型到 RTM_GETROUTE 消息?
【发布时间】:2023-03-22 16:17:01
【问题描述】:

我已经使用 netlink 套接字向内核发送了 RTM_GETROUTE 消息。现在我正在收听内核的消息。

内核通过 netlink 套接字发送nlmsghdr 结构作为回复。我需要知道它的消息类型 (nlmsg_type) 是什么? (我的代码也在监听 rout 删除/创建事件,我要区分)。

又是 RTM_GETROUTE 回复吗?任何示例代码或链接表示赞赏。

对于路由,我只能找到 NEWROUTE、DELROUTE 和 GETROUTE 消息,但所有 3 个似乎都有其他用途。 (第一个是创建路由,第二个是删除路由,第三个是我使用的请求。)

这是我发送消息的代码。

struct nlmsghdr* hdr;
struct rtmsg* nl_p;

nl_p = (struct rtmsg*) NLMSG_DATA(hdr);
memset(&nl_p, 0, sizeof(nl_p));

hdr->nlmsg_pid = 0;
hdr->nlmsg_seq = ++seq_num;
hdr->nlmsg_type = RTM_GETROUTE;

nl_p->rtm_family = AF_INET;
nl_p->rtm_dst_len = 0;
nl_p->rtm_src_len = 0;
nl_pload->rtm_table = RT_TABLE_MAIN;

rtable_success = send(fd, hdr, hdr->nlmsg_len, 0)

解析收到的消息有an example,但我需要知道我需要的消息类型(nlmsg_type)才能过滤掉其他消息。

【问题讨论】:

    标签: c routing netlink reply


    【解决方案1】:

    libdnet 项目位于: http://libdnet.sourceforge.net/

    您可以在 route_get 函数中找到问题的答案。

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      相关资源
      最近更新 更多