diff options
author | Mahesh Bandewar <maheshb@google.com> | 2014-12-07 02:53:46 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-12-10 00:10:06 +0300 |
commit | d6b00fec5dbbe976904b4d77e7d4f9493df5c2ec (patch) | |
tree | cf7a45490bd487bd725dee5cfb3830ea22277798 /drivers | |
parent | 5933fea7aa7237ba52d67c069c39ad5c3ab7a036 (diff) | |
download | linux-d6b00fec5dbbe976904b4d77e7d4f9493df5c2ec.tar.xz |
macvlan: play well with ipvlan device
If device is already used as an ipvlan port then refuse to
use it as a macvlan port at early stage of port creation.
thost1:~# ip link add link eth0 ipvl0 type ipvlan
thost1:~# echo $?
0
thost1:~# ip link add link eth0 mvl0 type macvlan
RTNETLINK answers: Device or resource busy
thost1:~# echo $?
2
thost1:~#
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/macvlan.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 10604db2a3a0..612e0731142d 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -1057,6 +1057,9 @@ static int macvlan_port_create(struct net_device *dev) if (dev->type != ARPHRD_ETHER || dev->flags & IFF_LOOPBACK) return -EINVAL; + if (netif_is_ipvlan_port(dev)) + return -EBUSY; + port = kzalloc(sizeof(*port), GFP_KERNEL); if (port == NULL) return -ENOMEM; |