From efc68de5cd70d62b1941a707d22299422f1962f9 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Wed, 27 May 2015 19:30:50 +0200 Subject: [PATCH] interface: don't error out if a bond has no interfaces It's not a problem at all and causes virt-manager to break down. Note: netcf 0.2.8 and earlier generates invalid XML for a bond with no interfaces anyway, so in that case this error in libvirt is never reached since we fail earlier. Signed-off-by: Lubomir Rintel --- src/conf/interface_conf.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c index c2eb945354..26e55cc4f8 100644 --- a/src/conf/interface_conf.c +++ b/src/conf/interface_conf.c @@ -1,7 +1,7 @@ /* * interface_conf.c: interfaces XML handling * - * Copyright (C) 2006-2010, 2013, 2014 Red Hat, Inc. + * Copyright (C) 2006-2010, 2013-2015 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -548,39 +548,34 @@ virInterfaceDefParseBondItfs(virInterfaceDefPtr def, virInterfaceDefPtr itf; int nbItf; size_t i; - int ret = 0; + int ret = -1; nbItf = virXPathNodeSet("./interface", ctxt, &interfaces); - if (nbItf < 0) { - ret = -1; - goto error; - } + if (nbItf < 0) + goto cleanup; if (nbItf == 0) { - virReportError(VIR_ERR_XML_ERROR, - "%s", _("bond has no interfaces")); - ret = -1; - goto error; + ret = 0; + goto cleanup; } - if (VIR_ALLOC_N(def->data.bond.itf, nbItf) < 0) { - ret = -1; - goto error; - } + if (VIR_ALLOC_N(def->data.bond.itf, nbItf) < 0) + goto cleanup; + def->data.bond.nbItf = nbItf; for (i = 0; i < nbItf; i++) { ctxt->node = interfaces[i]; itf = virInterfaceDefParseXML(ctxt, VIR_INTERFACE_TYPE_BOND); if (itf == NULL) { - ret = -1; def->data.bond.nbItf = i; - goto error; + goto cleanup; } def->data.bond.itf[i] = itf; } - error: + ret = 0; + cleanup: VIR_FREE(interfaces); ctxt->node = bond; return ret; -- GitLab