我已经使用 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)
有一个解析接收到的消息的示例,但我需要知道我需要的消息类型(nlmsg_type)才能过滤掉其他消息。