[PATCH 1/2] iplink: implement support for creating vrf interfaces
Jan Luebbe
jluebbe at debian.org
Wed Feb 14 13:05:26 UTC 2018
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 <jluebbe at 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
More information about the busybox
mailing list