From: David Ahern <dsahern@gmail.com>
To: netdev@vger.kernel.org
Cc: ebiederm@xmission.com, David Ahern <dsahern@gmail.com>
Subject: [RFC PATCH 29/29] iproute2: Add vrf option to ip link command
Date: Wed, 4 Feb 2015 18:34:30 -0700 [thread overview]
Message-ID: <1423100070-31848-30-git-send-email-dsahern@gmail.com> (raw)
In-Reply-To: <1423100070-31848-1-git-send-email-dsahern@gmail.com>
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(+)
diff --git a/bridge/link.c b/bridge/link.c
index c8555f82d5b4..520e656f3bf8 100644
--- a/bridge/link.c
+++ b/bridge/link.c
@@ -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]));
diff --git a/include/linux/if_link.h b/include/linux/if_link.h
index 167ec34bab73..c261d3040b88 100644
--- a/include/linux/if_link.h
+++ b/include/linux/if_link.h
@@ -146,6 +146,8 @@ enum {
IFLA_PHYS_PORT_ID,
IFLA_CARRIER_CHANGES,
IFLA_PHYS_SWITCH_ID,
+ IFLA_LINK_NETNSID,
+ IFLA_VRF,
__IFLA_MAX
};
diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index d5e863dd1f12..f4001e0ef8cb 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -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]) {
diff --git a/ip/iplink.c b/ip/iplink.c
index c93d1dc3d5f6..0474293527c5 100644
--- a/ip/iplink.c
+++ b/ip/iplink.c
@@ -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;
--
1.9.3 (Apple Git-50)
next prev parent reply other threads:[~2015-02-05 1:36 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-05 1:34 [RFC PATCH 00/29] net: VRF support David Ahern
2015-02-05 1:34 ` [RFC PATCH 01/29] net: Introduce net_ctx and macro for context comparison David Ahern
2015-02-05 1:34 ` [RFC PATCH 02/29] net: Flip net_device to use net_ctx David Ahern
2015-02-05 13:47 ` Nicolas Dichtel
2015-02-06 0:45 ` David Ahern
2015-02-05 1:34 ` [RFC PATCH 03/29] net: Flip sock_common to net_ctx David Ahern
2015-02-05 1:34 ` [RFC PATCH 04/29] net: Add net_ctx macros for skbuffs David Ahern
2015-02-05 1:34 ` [RFC PATCH 05/29] net: Flip seq_net_private to net_ctx David Ahern
2015-02-05 1:34 ` [RFC PATCH 06/29] net: Flip fib_rules and fib_rules_ops to use net_ctx David Ahern
2015-02-05 1:34 ` [RFC PATCH 07/29] net: Flip inet_bind_bucket to net_ctx David Ahern
2015-02-05 1:34 ` [RFC PATCH 08/29] net: Flip fib_info " David Ahern
2015-02-05 1:34 ` [RFC PATCH 09/29] net: Flip ip6_flowlabel " David Ahern
2015-02-05 1:34 ` [RFC PATCH 10/29] net: Flip neigh structs " David Ahern
2015-02-05 1:34 ` [RFC PATCH 11/29] net: Flip nl_info " David Ahern
2015-02-05 1:34 ` [RFC PATCH 12/29] net: Add device lookups by net_ctx David Ahern
2015-02-05 1:34 ` [RFC PATCH 13/29] net: Convert function arg from struct net to struct net_ctx David Ahern
2015-02-05 1:34 ` [RFC PATCH 14/29] net: vrf: Introduce vrf header file David Ahern
2015-02-05 13:44 ` Nicolas Dichtel
2015-02-06 0:52 ` David Ahern
2015-02-06 8:53 ` Nicolas Dichtel
2015-02-05 1:34 ` [RFC PATCH 15/29] net: vrf: Add vrf to net_ctx struct David Ahern
2015-02-05 1:34 ` [RFC PATCH 16/29] net: vrf: Set default vrf David Ahern
2015-02-05 1:34 ` [RFC PATCH 17/29] net: vrf: Add vrf context to task struct David Ahern
2015-02-05 1:34 ` [RFC PATCH 18/29] net: vrf: Plumbing for vrf context on a socket David Ahern
2015-02-05 13:44 ` Nicolas Dichtel
2015-02-06 1:18 ` David Ahern
2015-02-05 1:34 ` [RFC PATCH 19/29] net: vrf: Add vrf context to skb David Ahern
2015-02-05 13:45 ` Nicolas Dichtel
2015-02-06 1:21 ` David Ahern
2015-02-06 3:54 ` Eric W. Biederman
2015-02-06 6:00 ` David Ahern
2015-02-05 1:34 ` [RFC PATCH 20/29] net: vrf: Add vrf context to flow struct David Ahern
2015-02-05 1:34 ` [RFC PATCH 21/29] net: vrf: Add vrf context to genid's David Ahern
2015-02-05 1:34 ` [RFC PATCH 22/29] net: vrf: Set VRF id in various network structs David Ahern
2015-02-05 1:34 ` [RFC PATCH 23/29] net: vrf: Enable vrf checks David Ahern
2015-02-05 1:34 ` [RFC PATCH 24/29] net: vrf: Add support to get/set vrf context on a device David Ahern
2015-02-05 1:34 ` [RFC PATCH 25/29] net: vrf: Handle VRF any context David Ahern
2015-02-05 13:46 ` Nicolas Dichtel
2015-02-06 1:23 ` David Ahern
2015-02-05 1:34 ` [RFC PATCH 26/29] net: vrf: Change single_open_net to pass net_ctx David Ahern
2015-02-05 1:34 ` [RFC PATCH 27/29] net: vrf: Add vrf checks and context to ipv4 proc files David Ahern
2015-02-05 1:34 ` [RFC PATCH 28/29] iproute2: vrf: Add vrf subcommand David Ahern
2015-02-05 1:34 ` David Ahern [this message]
2015-02-05 5:17 ` [RFC PATCH 00/29] net: VRF support roopa
2015-02-05 13:44 ` Nicolas Dichtel
2015-02-06 1:32 ` David Ahern
2015-02-06 8:53 ` Nicolas Dichtel
2015-02-05 23:12 ` roopa
2015-02-06 2:19 ` David Ahern
2015-02-09 16:38 ` roopa
2015-02-10 10:43 ` Derek Fawcus
2015-02-06 6:10 ` Shmulik Ladkani
2015-02-09 15:54 ` roopa
2015-02-11 7:42 ` Shmulik Ladkani
2015-02-06 1:33 ` Stephen Hemminger
2015-02-06 2:10 ` David Ahern
2015-02-06 4:14 ` Eric W. Biederman
2015-02-06 6:15 ` David Ahern
2015-02-06 15:08 ` Nicolas Dichtel
[not found] ` <87iofe7n1x.fsf@x220.int.ebiederm.org>
2015-02-09 20:48 ` Nicolas Dichtel
2015-02-11 4:14 ` David Ahern
2015-02-06 15:10 ` Nicolas Dichtel
2015-02-06 20:50 ` Eric W. Biederman
2015-02-09 0:36 ` David Ahern
2015-02-09 11:30 ` Derek Fawcus
[not found] ` <871tlxtbhd.fsf_-_@x220.int.ebiederm.org>
2015-02-11 2:55 ` network namespace bloat Eric Dumazet
2015-02-11 3:18 ` Eric W. Biederman
2015-02-19 19:49 ` David Miller
2015-03-09 18:22 ` [PATCH net-next 0/6] tcp_metrics: Network namespace bloat reduction Eric W. Biederman
2015-03-09 18:27 ` [PATCH net-next 1/6] tcp_metrics: panic when tcp_metrics can not be allocated Eric W. Biederman
2015-03-09 18:50 ` Sergei Shtylyov
2015-03-11 19:22 ` Sergei Shtylyov
2015-03-09 18:27 ` [PATCH net-next 2/6] tcp_metrics: Mix the network namespace into the hash function Eric W. Biederman
2015-03-09 18:29 ` [PATCH net-next 3/6] tcp_metrics: Add a field tcpm_net and verify it matches on lookup Eric W. Biederman
2015-03-09 20:25 ` Julian Anastasov
2015-03-10 6:59 ` Eric W. Biederman
2015-03-10 8:23 ` Julian Anastasov
2015-03-11 0:58 ` Eric W. Biederman
2015-03-10 16:36 ` David Miller
2015-03-10 17:06 ` Eric W. Biederman
2015-03-10 17:29 ` David Miller
2015-03-10 17:56 ` Eric W. Biederman
2015-03-09 18:30 ` [PATCH net-next 4/6] tcp_metrics: Remove the unused return code from tcp_metrics_flush_all Eric W. Biederman
2015-03-09 18:30 ` [PATCH net-next 5/6] tcp_metrics: Rewrite tcp_metrics_flush_all Eric W. Biederman
2015-03-09 18:31 ` [PATCH net-next 6/6] tcp_metrics: Use a single hash table for all network namespaces Eric W. Biederman
2015-03-09 18:43 ` Eric Dumazet
2015-03-09 18:47 ` Eric Dumazet
2015-03-09 19:35 ` Eric W. Biederman
2015-03-09 20:21 ` Eric Dumazet
2015-03-09 20:09 ` [PATCH net-next 0/6] tcp_metrics: Network namespace bloat reduction David Miller
2015-03-09 20:21 ` Eric W. Biederman
2015-03-11 16:33 ` [PATCH net-next 0/8] tcp_metrics: Network namespace bloat reduction v2 Eric W. Biederman
2015-03-11 16:35 ` [PATCH net-next 1/8] net: Kill hold_net release_net Eric W. Biederman
2015-03-11 16:55 ` Eric Dumazet
2015-03-11 17:34 ` Eric W. Biederman
2015-03-11 17:07 ` Eric Dumazet
2015-03-11 17:08 ` Eric Dumazet
2015-03-11 17:10 ` Eric Dumazet
2015-03-11 17:36 ` Eric W. Biederman
2015-03-11 16:36 ` [PATCH net-next 2/8] net: Introduce possible_net_t Eric W. Biederman
2015-03-11 16:38 ` [PATCH net-next 3/8] tcp_metrics: panic when tcp_metrics_init fails Eric W. Biederman
2015-03-11 16:38 ` [PATCH net-next 4/8] tcp_metrics: Mix the network namespace into the hash function Eric W. Biederman
2015-03-11 16:40 ` [PATCH net-next 5/8] tcp_metrics: Add a field tcpm_net and verify it matches on lookup Eric W. Biederman
2015-03-11 16:41 ` [PATCH net-next 6/8] tcp_metrics: Remove the unused return code from tcp_metrics_flush_all Eric W. Biederman
2015-03-11 16:43 ` [PATCH net-next 7/8] tcp_metrics: Rewrite tcp_metrics_flush_all Eric W. Biederman
2015-03-11 16:43 ` [PATCH net-next 8/8] tcp_metrics: Use a single hash table for all network namespaces Eric W. Biederman
2015-03-13 5:04 ` [PATCH net-next 0/6] tcp_metrics: Network namespace bloat reduction v3 Eric W. Biederman
2015-03-13 5:04 ` [PATCH net-next 1/6] tcp_metrics: panic when tcp_metrics_init fails Eric W. Biederman
2015-03-13 5:05 ` [PATCH net-next 2/6] tcp_metrics: Mix the network namespace into the hash function Eric W. Biederman
2015-03-13 5:05 ` [PATCH net-next 3/6] tcp_metrics: Add a field tcpm_net and verify it matches on lookup Eric W. Biederman
2015-03-13 5:06 ` [PATCH net-next 4/6] tcp_metrics: Remove the unused return code from tcp_metrics_flush_all Eric W. Biederman
2015-03-13 5:07 ` [PATCH net-next 5/6] tcp_metrics: Rewrite tcp_metrics_flush_all Eric W. Biederman
2015-03-13 5:07 ` [PATCH net-next 6/6] tcp_metrics: Use a single hash table for all network namespaces Eric W. Biederman
2015-03-13 5:57 ` [PATCH net-next 0/6] tcp_metrics: Network namespace bloat reduction v3 David Miller
2015-02-11 17:09 ` network namespace bloat Nicolas Dichtel
2015-02-10 0:53 ` [RFC PATCH 00/29] net: VRF support Thomas Graf
2015-02-10 20:54 ` David Ahern
2016-05-25 16:04 ` Chenna
2016-05-25 19:04 ` David Ahern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1423100070-31848-30-git-send-email-dsahern@gmail.com \
--to=dsahern@gmail.com \
--cc=ebiederm@xmission.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).