From ac97c2ba4ce203662b5885e7c85bd704afdab54d Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Mon, 30 Jul 2012 11:26:51 +0100 Subject: [PATCH] Improve error message in LXC startup with network is not active If an LXC container is using a virtual network and that network is not active, currently the user gets a rather unhelpful error message about tap device setup failure. Add an explicit check for whether the network is active, in exactly the same way as the QEMU driver --- src/lxc/lxc_process.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index b42f4a04de..65b463fc16 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -452,14 +452,37 @@ static int virLXCProcessSetupInterfaces(virConnectPtr conn, case VIR_DOMAIN_NET_TYPE_NETWORK: { virNetworkPtr network; char *brname = NULL; + bool fail = false; + int active; + virErrorPtr errobj; if (!(network = virNetworkLookupByName(conn, def->nets[i]->data.network.name))) goto cleanup; - brname = virNetworkGetBridgeName(network); + active = virNetworkIsActive(network); + if (active != 1) { + fail = true; + if (active == 0) + virReportError(VIR_ERR_INTERNAL_ERROR, + _("Network '%s' is not active."), + def->nets[i]->data.network.name); + goto cleanup; + } + + if (!fail) { + brname = virNetworkGetBridgeName(network); + if (brname == NULL) + fail = true; + } + + /* Make sure any above failure is preserved */ + errobj = virSaveLastError(); virNetworkFree(network); - if (!brname) + virSetError(errobj); + virFreeError(errobj); + + if (fail) goto cleanup; if (virLXCProcessSetupInterfaceBridged(conn, -- GitLab