在NETLINK消息中添加MPLS属性

时间:2015-08-08 15:04:14

标签: linux linux-kernel kernel netlink

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

我尝试了一些代码来写 -

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 Label。

请帮帮我。

1 个答案:

答案 0 :(得分:4)

根据net/mpls/af_mpls.c:rtm_to_route_config(),标签应提供RTA_DST NLA。

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