最新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。
请帮帮我。
答案 0 :(得分:4)
根据net/mpls/af_mpls.c:rtm_to_route_config()
,标签应提供RTA_DST
NLA。
请注意函数中的断言,它们非常严格。