From: Michael Tokarev Date: Fri, 20 Nov 2009 14:01:31 +0000 (+0100) Subject: check if lxc.netdev.link is set for macvlan X-Git-Tag: lxc_0_6_4~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d957ae2d5134c0654819b1faf2315e6ccbc1c860;p=thirdparty%2Flxc.git check if lxc.netdev.link is set for macvlan 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 Signed-off-by: Daniel Lezcano --- diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 357143630..abfdb60e6 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -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)