@@ -146,6 +146,9 @@ int print_linkinfo(const struct sockaddr_nl *who,
print_link_flags(fp, ifi->ifi_flags);
+ if (tb[IFLA_VRF])
+ fprintf(fp, "vrf %u ", rta_getattr_u32(tb[IFLA_VRF]));
+
if (tb[IFLA_MTU])
fprintf(fp, "mtu %u ", rta_getattr_u32(tb[IFLA_MTU]));
@@ -146,6 +146,8 @@ enum {
IFLA_PHYS_PORT_ID,
IFLA_CARRIER_CHANGES,
IFLA_PHYS_SWITCH_ID,
+ IFLA_LINK_NETNSID,
+ IFLA_VRF,
__IFLA_MAX
};
@@ -625,6 +625,8 @@ int print_linkinfo(const struct sockaddr_nl *who,
if (tb[IFLA_MTU])
fprintf(fp, "mtu %u ", *(int*)RTA_DATA(tb[IFLA_MTU]));
+ if (tb[IFLA_VRF])
+ fprintf(fp, "vrf %u ", *(int*)RTA_DATA(tb[IFLA_VRF]));
if (tb[IFLA_QDISC])
fprintf(fp, "qdisc %s ", rta_getattr_str(tb[IFLA_QDISC]));
if (tb[IFLA_MASTER]) {
@@ -72,6 +72,7 @@ void iplink_usage(void)
fprintf(stderr, " [ mtu MTU ]\n");
fprintf(stderr, " [ netns PID ]\n");
fprintf(stderr, " [ netns NAME ]\n");
+ fprintf(stderr, " [ vrf ID]\n");
fprintf(stderr, " [ alias NAME ]\n");
fprintf(stderr, " [ vf NUM [ mac LLADDR ]\n");
fprintf(stderr, " [ vlan VLANID [ qos VLAN-QOS ] ]\n");
@@ -383,6 +384,7 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req,
int mtu = -1;
int netns = -1;
int vf = -1;
+ int vrf = -1;
int numtxqueues = -1;
int numrxqueues = -1;
int dev_index = 0;
@@ -447,6 +449,13 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req,
addattr_l(&req->n, sizeof(*req), IFLA_NET_NS_PID, &netns, 4);
else
invarg("Invalid \"netns\" value\n", *argv);
+ } else if (strcmp(*argv, "vrf") == 0) {
+ NEXT_ARG();
+ if (vrf != -1)
+ duparg("vrf", *argv);
+ if (get_integer(&vrf, *argv, 0))
+ invarg("Invalid \"vrf\" value\n", *argv);
+ addattr_l(&req->n, sizeof(*req), IFLA_VRF, &vrf, 4);
} else if (strcmp(*argv, "multicast") == 0) {
NEXT_ARG();
req->i.ifi_change |= IFF_MULTICAST;
Add option to ip link to change the vrf context on a netdevice. e.g., ip link set dev eth4 vrf 99 Signed-off-by: David Ahern <dsahern@gmail.com> --- bridge/link.c | 3 +++ include/linux/if_link.h | 2 ++ ip/ipaddress.c | 2 ++ ip/iplink.c | 9 +++++++++ 4 files changed, 16 insertions(+)