我已使用netlink套接字向内核发送了RTM_GETROUTE消息。现在我正在收听内核消息。
内核通过netlink套接字发送nlmsghdr结构作为回复。我需要知道它的消息类型是什么( nlmsg_type )? (我的代码也在侦听路径删除/创建事件,我想区分)。
回复时又是RTM_GETROUTE吗?任何示例代码或链接都表示赞赏。
对于路由,我只能找到NEWROUTE,DELROUTE和GETROUTE消息,但所有3个似乎都有其他用途。 (创建路径时为第1个,删除时为第2个,使用时为第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 )才能过滤掉其他消息。