提交 efc68de5 编写于 作者: L Lubomir Rintel 提交者: Laine Stump

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: NLubomir Rintel <lkundrak@v3.sk>
上级 ceab3979
/*
* 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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册