Linux 在NETLINK消息中添加MPLS属性

Linux 在NETLINK消息中添加MPLS属性,linux,linux-kernel,kernel,netlink,Linux,Linux Kernel,Kernel,Netlink,最新的Linux内核4.1.4支持MPLS数据路径,我们可以通过NETLINK套接字在内核中编程MPLS路由表。socket.h中定义了一个新的地址族 我试着写一些代码- req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtmsg)); req.n.nlmsg_flags = NLM_F_REQUEST|NLM_F_CREATE; req.n.nlmsg_type = RTM_NEWROUTE; req.r.rtm_family = AF_MPLS; r

最新的Linux内核4.1.4支持MPLS数据路径,我们可以通过NETLINK套接字在内核中编程MPLS路由表。socket.h中定义了一个新的地址族

我试着写一些代码-

req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtmsg));
req.n.nlmsg_flags = NLM_F_REQUEST|NLM_F_CREATE;
req.n.nlmsg_type = RTM_NEWROUTE;
req.r.rtm_family = AF_MPLS;
req.r.rtm_table = RT_TABLE_MAIN;
req.r.rtm_protocol = RTPROT_BOOT;
req.r.rtm_scope = RT_SCOPE_UNIVERSE;
req.r.rtm_type = RTN_UNICAST;
但是,我不知道如何在Netlink属性中添加MPLS标签

请帮助我。

根据net/mpls/af_mpls.c:rtm_to_route_配置,标签应随RTA_DST NLA一起提供


请注意函数中的断言,它们非常严格。

RTA_NEWDST和RTA_DST,都用于标签,使用哪一个?RTA_DST是一个要匹配的传入标签,RTA_NEWDST取决于最大新标签,以向前推送skb请参见mpls_forward Btw,谢谢提示,现在将在库中实现它。不确定它是否对您有用,但由于您的问题,我开始在中支持与MPLS相关的RTNL。现在它得到了部分支持,但在下周之前,我希望能涵盖af_mpls.c提供的所有内容。