diff options
author | Taehee Yoo <ap420073@gmail.com> | 2020-08-21 17:47:32 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-08-24 15:53:33 -0700 |
commit | 0bad834ca7bf9999ed9841f2bf9f5f07fbe02136 (patch) | |
tree | c30092d3124f35ba49365f265afa4970c459d94b /drivers | |
parent | 7611cbb900b4b9a6fe5eca12fb12645c0576a015 (diff) | |
download | linux-0bad834ca7bf9999ed9841f2bf9f5f07fbe02136.tar.bz2 |
ipvlan: advertise link netns via netlink
Assign rtnl_link_ops->get_link_net() callback so that IFLA_LINK_NETNSID is
added to rtnetlink messages.
Test commands:
ip netns add nst
ip link add dummy0 type dummy
ip link add ipvlan0 link dummy0 type ipvlan
ip link set ipvlan0 netns nst
ip netns exec nst ip link show ipvlan0
Result:
---Before---
6: ipvlan0@if5: <BROADCAST,MULTICAST> ...
link/ether 82:3a:78:ab:60:50 brd ff:ff:ff:ff:ff:ff
---After---
12: ipvlan0@if11: <BROADCAST,MULTICAST> ...
link/ether 42:b1:ad:57:4e:27 brd ff:ff:ff:ff:ff:ff link-netnsid 0
~~~~~~~~~~~~~~
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ipvlan/ipvlan_main.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c index 5bca94c99006..60b7d93bb834 100644 --- a/drivers/net/ipvlan/ipvlan_main.c +++ b/drivers/net/ipvlan/ipvlan_main.c @@ -684,6 +684,13 @@ static const struct nla_policy ipvlan_nl_policy[IFLA_IPVLAN_MAX + 1] = [IFLA_IPVLAN_FLAGS] = { .type = NLA_U16 }, }; +static struct net *ipvlan_get_link_net(const struct net_device *dev) +{ + struct ipvl_dev *ipvlan = netdev_priv(dev); + + return dev_net(ipvlan->phy_dev); +} + static struct rtnl_link_ops ipvlan_link_ops = { .kind = "ipvlan", .priv_size = sizeof(struct ipvl_dev), @@ -691,6 +698,7 @@ static struct rtnl_link_ops ipvlan_link_ops = { .setup = ipvlan_link_setup, .newlink = ipvlan_link_new, .dellink = ipvlan_link_delete, + .get_link_net = ipvlan_get_link_net, }; int ipvlan_link_register(struct rtnl_link_ops *ops) |