]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
check if lxc.netdev.link is set for macvlan
authorMichael Tokarev <mjt@tls.msk.ru>
Fri, 20 Nov 2009 14:01:31 +0000 (15:01 +0100)
committerDaniel Lezcano <dlezcano@fr.ibm.com>
Fri, 20 Nov 2009 14:01:31 +0000 (15:01 +0100)
Ensure that lxc.netdev.link is specified for macvlan interfaces,
since it's required.

While at it, simplify logic in instanciate_macvlan():
remove unnecessary-complicating goto statements (we only
need to perform a cleanup in one place)

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
src/lxc/conf.c

index 3571436309b5fc7fdc903b690f5ffd7b2da6a242..abfdb60e6f56c80525aad5653830c2ff0e2840d0 100644 (file)
@@ -893,10 +893,15 @@ out_delete:
        lxc_device_delete(veth1);
        goto out;
 }
+
 static int instanciate_macvlan(struct lxc_netdev *netdev)
 {
        char peer[IFNAMSIZ];
-       int ret = -1;
+
+       if (!netdev->link) {
+               ERROR("no link specified for macvlan netdev");
+               return -1;
+       }
 
        snprintf(peer, sizeof(peer), "mcXXXXXX");
 
@@ -910,24 +915,19 @@ static int instanciate_macvlan(struct lxc_netdev *netdev)
        if (lxc_macvlan_create(netdev->link, peer)) {
                ERROR("failed to create macvlan interface '%s' on '%s'",
                      peer, netdev->link);
-               goto out;
+               return -1;
        }
 
        netdev->ifindex = if_nametoindex(peer);
        if (!netdev->ifindex) {
                ERROR("failed to retrieve the index for %s", peer);
-               goto out_delete;
+               lxc_device_delete(peer);
+               return -1;
        }
 
        DEBUG("instanciated macvlan '%s', index is '%d'", peer, netdev->ifindex);
 
-       ret = 0;
-out:
-       return ret;
-
-out_delete:
-       lxc_device_delete(peer);
-       goto out;
+       return 0;
 }
 
 static int instanciate_phys(struct lxc_netdev *netdev)