VRF interfaces have a mandatory table parameter, which needs to be
specified using a RTNL attribute.

function                                             old     new   delta
do_add_or_delete                                    1228    1340    +112
.rodata                                           149329  149338      +9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 121/0)             Total: 121 bytes

Signed-off-by: Jan Luebbe <jlue...@debian.org>
---
 networking/libiproute/iplink.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c
index f38fba055..61b18231d 100644
--- a/networking/libiproute/iplink.c
+++ b/networking/libiproute/iplink.c
@@ -525,6 +525,18 @@ static void vlan_parse_opt(char **argv, struct nlmsghdr 
*n, unsigned int size)
                addattr_l(n, size, IFLA_VLAN_FLAGS, &flags, sizeof(flags));
 }
 
+static void vrf_parse_opt(char **argv, struct nlmsghdr *n, unsigned int size)
+{
+       uint32_t table;
+
+       if (strcmp(*argv, "table") != 0)
+               invarg_1_to_2(*argv, "type vrf");
+
+       NEXT_ARG();
+       table = get_u32(*argv, "table");
+       addattr_l(n, size, IFLA_VRF_TABLE, &table, sizeof(table));
+}
+
 #ifndef NLMSG_TAIL
 #define NLMSG_TAIL(nmsg) \
        ((struct rtattr *) (((void *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len)))
@@ -609,6 +621,8 @@ static int do_add_or_delete(char **argv, const unsigned rtm)
 
                        if (strcmp(type_str, "vlan") == 0)
                                vlan_parse_opt(argv, &req.n, sizeof(req));
+                       else if (strcmp(type_str, "vrf") == 0)
+                               vrf_parse_opt(argv, &req.n, sizeof(req));
 
                        data->rta_len = (void *)NLMSG_TAIL(&req.n) - (void 
*)data;
                }
-- 
2.11.0

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to