aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/macvlan.c
diff options
context:
space:
mode:
authorKevin Wallace <kevin@pentabarf.net>2013-12-03 05:55:22 -0500
committerDavid S. Miller <davem@davemloft.net>2013-12-05 19:59:02 -0500
commitd70f2cf520cf8c86c6b467fc5dcea524ec51dc2f (patch)
tree6292f59d2e2c816673cb8af81edb93e049f410ee /drivers/net/macvlan.c
parent426e1fa31e0d8e982891e801c80b84b74f209f10 (diff)
macvlan: Support creating macvtaps from macvlans
When running in a network namespace whose only link to the outside world is a macvlan device, not being able to create a macvtap off of it is a real pain. So modify macvtap creation to automatically forward a creation of a macvtap on a macvlan to become a creation of a macvtap on the underlying network device, just like is currently done with macvlan-on-macvlan devices. v2: Use netif_is_macvlan and macvlan_dev_real_dev helpers to make it more clear what we're doing. Signed-off-by: Kevin Wallace <kevin@pentabarf.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/macvlan.c')
-rw-r--r--drivers/net/macvlan.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index acf93798dc67..cfb91570cddd 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -820,13 +820,11 @@ int macvlan_common_newlink(struct net *src_net, struct net_device *dev,
820 if (lowerdev == NULL) 820 if (lowerdev == NULL)
821 return -ENODEV; 821 return -ENODEV;
822 822
823 /* When creating macvlans on top of other macvlans - use 823 /* When creating macvlans or macvtaps on top of other macvlans - use
824 * the real device as the lowerdev. 824 * the real device as the lowerdev.
825 */ 825 */
826 if (lowerdev->rtnl_link_ops == dev->rtnl_link_ops) { 826 if (netif_is_macvlan(lowerdev))
827 struct macvlan_dev *lowervlan = netdev_priv(lowerdev); 827 lowerdev = macvlan_dev_real_dev(lowerdev);
828 lowerdev = lowervlan->lowerdev;
829 }
830 828
831 if (!tb[IFLA_MTU]) 829 if (!tb[IFLA_MTU])
832 dev->mtu = lowerdev->mtu; 830 dev->mtu = lowerdev->mtu;