summaryrefslogtreecommitdiff
path: root/drivers/net/veth.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-05-19 17:00:06 +1000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-05-19 17:00:06 +1000
commit4c8440666b995f20604852b35dcfdbcc1d5931f1 (patch)
treeb3b6cd65ee275ba1adf9d2c050063f30ebbadb91 /drivers/net/veth.c
parent751e1f5099f1568444fe2485f2485ca541d4952e (diff)
parentc560bbceaf6b06e52f1ef20131b76a3fdc0a2c19 (diff)
downloadlinux-next-4c8440666b995f20604852b35dcfdbcc1d5931f1.tar.gz
Merge branch 'merge' into next
Diffstat (limited to 'drivers/net/veth.c')
-rw-r--r--drivers/net/veth.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index 2de9b90c5f8f..3b99f64104fd 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -403,6 +403,17 @@ static int veth_newlink(struct net *src_net, struct net_device *dev,
if (tb[IFLA_ADDRESS] == NULL)
random_ether_addr(dev->dev_addr);
+ if (tb[IFLA_IFNAME])
+ nla_strlcpy(dev->name, tb[IFLA_IFNAME], IFNAMSIZ);
+ else
+ snprintf(dev->name, IFNAMSIZ, DRV_NAME "%%d");
+
+ if (strchr(dev->name, '%')) {
+ err = dev_alloc_name(dev, dev->name);
+ if (err < 0)
+ goto err_alloc_name;
+ }
+
err = register_netdevice(dev);
if (err < 0)
goto err_register_dev;
@@ -422,6 +433,7 @@ static int veth_newlink(struct net *src_net, struct net_device *dev,
err_register_dev:
/* nothing to do */
+err_alloc_name:
err_configure_peer:
unregister_netdevice(peer);
return err;