mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
Refactoring virDomainHostdevSubsysPCIDefParseXML() to use XPath
Signed-off-by: Kristina Hanicova <khanicov@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
56cbdb858e
commit
bd8f53bcab
@ -6798,12 +6798,16 @@ virDomainHostdevSubsysPCIOrigStatesDefParseXML(xmlNodePtr node,
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
virDomainHostdevSubsysPCIDefParseXML(xmlNodePtr node,
|
virDomainHostdevSubsysPCIDefParseXML(xmlNodePtr node,
|
||||||
xmlXPathContextPtr ctxt G_GNUC_UNUSED,
|
xmlXPathContextPtr ctxt,
|
||||||
virDomainHostdevDef *def,
|
virDomainHostdevDef *def,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
g_autofree char *filtering = NULL;
|
g_autofree char *filtering = NULL;
|
||||||
xmlNodePtr cur;
|
xmlNodePtr address = NULL;
|
||||||
|
xmlNodePtr origstates = NULL;
|
||||||
|
VIR_XPATH_NODE_AUTORESTORE(ctxt)
|
||||||
|
|
||||||
|
ctxt->node = node;
|
||||||
|
|
||||||
if ((filtering = virXMLPropString(node, "writeFiltering"))) {
|
if ((filtering = virXMLPropString(node, "writeFiltering"))) {
|
||||||
int val;
|
int val;
|
||||||
@ -6816,29 +6820,14 @@ virDomainHostdevSubsysPCIDefParseXML(xmlNodePtr node,
|
|||||||
def->writeFiltering = val;
|
def->writeFiltering = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
cur = node->children;
|
if ((address = virXPathNode("./address", ctxt)) &&
|
||||||
while (cur != NULL) {
|
virPCIDeviceAddressParseXML(address, &def->source.subsys.u.pci.addr) < 0)
|
||||||
if (cur->type == XML_ELEMENT_NODE) {
|
return -1;
|
||||||
if (virXMLNodeNameEqual(cur, "address")) {
|
|
||||||
virPCIDeviceAddress *addr =
|
|
||||||
&def->source.subsys.u.pci.addr;
|
|
||||||
|
|
||||||
if (virPCIDeviceAddressParseXML(cur, addr) < 0)
|
if ((flags & VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES) &&
|
||||||
return -1;
|
(origstates = virXPathNode("./origstates", ctxt)) &&
|
||||||
} else if ((flags & VIR_DOMAIN_DEF_PARSE_PCI_ORIG_STATES) &&
|
virDomainHostdevSubsysPCIOrigStatesDefParseXML(origstates, &def->origstates) < 0)
|
||||||
virXMLNodeNameEqual(cur, "origstates")) {
|
return -1;
|
||||||
virDomainHostdevOrigStates *states = &def->origstates;
|
|
||||||
if (virDomainHostdevSubsysPCIOrigStatesDefParseXML(cur, states) < 0)
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("unknown pci source type '%s'"),
|
|
||||||
cur->name);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cur = cur->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user