virPCIDeviceAddressParseXML: Use virXMLProp*

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
Tim Wiederhake 2021-04-21 14:08:02 +02:00 committed by Peter Krempa
parent 917a3dc200
commit e1e2e7ec46

View File

@ -200,52 +200,29 @@ virPCIDeviceAddressParseXML(xmlNodePtr node,
{ {
xmlNodePtr cur; xmlNodePtr cur;
xmlNodePtr zpci = NULL; xmlNodePtr zpci = NULL;
g_autofree char *domain = virXMLPropString(node, "domain");
g_autofree char *bus = virXMLPropString(node, "bus");
g_autofree char *slot = virXMLPropString(node, "slot");
g_autofree char *function = virXMLPropString(node, "function");
g_autofree char *multi = virXMLPropString(node, "multifunction");
memset(addr, 0, sizeof(*addr)); memset(addr, 0, sizeof(*addr));
if (domain && if (virXMLPropUInt(node, "domain", 0, VIR_XML_PROP_NONE,
virStrToLong_uip(domain, NULL, 0, &addr->domain) < 0) { &addr->domain) < 0)
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Cannot parse <address> 'domain' attribute"));
return -1; return -1;
}
if (bus && if (virXMLPropUInt(node, "bus", 0, VIR_XML_PROP_NONE,
virStrToLong_uip(bus, NULL, 0, &addr->bus) < 0) { &addr->bus) < 0)
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Cannot parse <address> 'bus' attribute"));
return -1; return -1;
}
if (slot && if (virXMLPropUInt(node, "slot", 0, VIR_XML_PROP_NONE,
virStrToLong_uip(slot, NULL, 0, &addr->slot) < 0) { &addr->slot) < 0)
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Cannot parse <address> 'slot' attribute"));
return -1; return -1;
}
if (function && if (virXMLPropUInt(node, "function", 0, VIR_XML_PROP_NONE,
virStrToLong_uip(function, NULL, 0, &addr->function) < 0) { &addr->function) < 0)
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Cannot parse <address> 'function' attribute"));
return -1; return -1;
}
if (multi) { if (virXMLPropTristateSwitch(node, "multifunction", VIR_XML_PROP_NONE,
int value; &addr->multi) < 0)
if ((value = virTristateSwitchTypeFromString(multi)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Unknown value '%s' for <address> 'multifunction' attribute"),
multi);
return -1; return -1;
}
addr->multi = value;
}
if (!virPCIDeviceAddressIsEmpty(addr) && !virPCIDeviceAddressIsValid(addr, true)) if (!virPCIDeviceAddressIsEmpty(addr) && !virPCIDeviceAddressIsValid(addr, true))
return -1; return -1;