在 NETLINK 消息中添加 MPLS 属性

Add MPLS attributes in NETLINK Messages

最新Linux内核4.1.4支持MPLS数据路径,我们可以通过NETLINK套接字在内核中编程MPLS路由table。 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 标签。

请帮帮我。

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

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