mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
conf: use virXMLPropString for virDomainVirtioOptionsParseXML
XPath is good for random search of elements, not for accessing attributes of one node. Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
561726cd7f
commit
58bf9d1d37
@ -1114,7 +1114,7 @@ virDomainXMLOptionGetNamespace(virDomainXMLOptionPtr xmlopt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
virDomainVirtioOptionsParseXML(xmlXPathContextPtr ctxt,
|
virDomainVirtioOptionsParseXML(xmlNodePtr driver,
|
||||||
virDomainVirtioOptionsPtr *virtio)
|
virDomainVirtioOptionsPtr *virtio)
|
||||||
{
|
{
|
||||||
char *str = NULL;
|
char *str = NULL;
|
||||||
@ -1122,12 +1122,15 @@ virDomainVirtioOptionsParseXML(xmlXPathContextPtr ctxt,
|
|||||||
int val;
|
int val;
|
||||||
virDomainVirtioOptionsPtr res;
|
virDomainVirtioOptionsPtr res;
|
||||||
|
|
||||||
|
if (*virtio || !driver)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (VIR_ALLOC(*virtio) < 0)
|
if (VIR_ALLOC(*virtio) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
res = *virtio;
|
res = *virtio;
|
||||||
|
|
||||||
if ((str = virXPathString("string(./driver/@iommu)", ctxt))) {
|
if ((str = virXMLPropString(driver, "iommu"))) {
|
||||||
if ((val = virTristateSwitchTypeFromString(str)) <= 0) {
|
if ((val = virTristateSwitchTypeFromString(str)) <= 0) {
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
_("invalid iommu value"));
|
_("invalid iommu value"));
|
||||||
@ -1137,7 +1140,7 @@ virDomainVirtioOptionsParseXML(xmlXPathContextPtr ctxt,
|
|||||||
}
|
}
|
||||||
VIR_FREE(str);
|
VIR_FREE(str);
|
||||||
|
|
||||||
if ((str = virXPathString("string(./driver/@ats)", ctxt))) {
|
if ((str = virXMLPropString(driver, "ats"))) {
|
||||||
if ((val = virTristateSwitchTypeFromString(str)) <= 0) {
|
if ((val = virTristateSwitchTypeFromString(str)) <= 0) {
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
_("invalid ats value"));
|
_("invalid ats value"));
|
||||||
@ -8406,6 +8409,9 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
|
|||||||
}
|
}
|
||||||
} else if (!def->src->driverName &&
|
} else if (!def->src->driverName &&
|
||||||
virXMLNodeNameEqual(cur, "driver")) {
|
virXMLNodeNameEqual(cur, "driver")) {
|
||||||
|
if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
if (virDomainDiskDefDriverParseXML(def, cur) < 0)
|
if (virDomainDiskDefDriverParseXML(def, cur) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
} else if (!def->mirror &&
|
} else if (!def->mirror &&
|
||||||
@ -8491,9 +8497,6 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virDomainVirtioOptionsParseXML(ctxt, &def->virtio) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* Disk volume types will have authentication information handled in
|
/* Disk volume types will have authentication information handled in
|
||||||
* virStorageTranslateDiskSourcePool
|
* virStorageTranslateDiskSourcePool
|
||||||
*/
|
*/
|
||||||
@ -9078,6 +9081,9 @@ virDomainControllerDefParseXML(xmlNodePtr node,
|
|||||||
max_sectors = virXMLPropString(cur, "max_sectors");
|
max_sectors = virXMLPropString(cur, "max_sectors");
|
||||||
ioeventfd = virXMLPropString(cur, "ioeventfd");
|
ioeventfd = virXMLPropString(cur, "ioeventfd");
|
||||||
iothread = virXMLPropString(cur, "iothread");
|
iothread = virXMLPropString(cur, "iothread");
|
||||||
|
|
||||||
|
if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0)
|
||||||
|
goto error;
|
||||||
} else if (virXMLNodeNameEqual(cur, "model")) {
|
} else if (virXMLNodeNameEqual(cur, "model")) {
|
||||||
if (processedModel) {
|
if (processedModel) {
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
@ -9105,9 +9111,6 @@ virDomainControllerDefParseXML(xmlNodePtr node,
|
|||||||
cur = cur->next;
|
cur = cur->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virDomainVirtioOptionsParseXML(ctxt, &def->virtio) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
/* node is parsed differently from target attributes because
|
/* node is parsed differently from target attributes because
|
||||||
* someone thought it should be a subelement instead...
|
* someone thought it should be a subelement instead...
|
||||||
*/
|
*/
|
||||||
@ -9483,6 +9486,9 @@ virDomainFSDefParseXML(xmlNodePtr node,
|
|||||||
wrpolicy = virXMLPropString(cur, "wrpolicy");
|
wrpolicy = virXMLPropString(cur, "wrpolicy");
|
||||||
if (!format)
|
if (!format)
|
||||||
format = virXMLPropString(cur, "format");
|
format = virXMLPropString(cur, "format");
|
||||||
|
|
||||||
|
if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0)
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cur = cur->next;
|
cur = cur->next;
|
||||||
@ -9544,9 +9550,6 @@ virDomainFSDefParseXML(xmlNodePtr node,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virDomainVirtioOptionsParseXML(ctxt, &def->virtio) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
def->src->path = source;
|
def->src->path = source;
|
||||||
source = NULL;
|
source = NULL;
|
||||||
def->dst = target;
|
def->dst = target;
|
||||||
@ -9986,6 +9989,9 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
|
|||||||
queues = virXMLPropString(cur, "queues");
|
queues = virXMLPropString(cur, "queues");
|
||||||
rx_queue_size = virXMLPropString(cur, "rx_queue_size");
|
rx_queue_size = virXMLPropString(cur, "rx_queue_size");
|
||||||
tx_queue_size = virXMLPropString(cur, "tx_queue_size");
|
tx_queue_size = virXMLPropString(cur, "tx_queue_size");
|
||||||
|
|
||||||
|
if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0)
|
||||||
|
goto error;
|
||||||
} else if (virXMLNodeNameEqual(cur, "filterref")) {
|
} else if (virXMLNodeNameEqual(cur, "filterref")) {
|
||||||
if (filter) {
|
if (filter) {
|
||||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
@ -10563,9 +10569,6 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virDomainVirtioOptionsParseXML(ctxt, &def->virtio) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
ctxt->node = oldnode;
|
ctxt->node = oldnode;
|
||||||
VIR_FREE(macaddr);
|
VIR_FREE(macaddr);
|
||||||
@ -11689,7 +11692,8 @@ virDomainInputDefParseXML(const virDomainDef *dom,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virDomainVirtioOptionsParseXML(ctxt, &def->virtio) < 0)
|
if (virDomainVirtioOptionsParseXML(virXPathNode("./driver", ctxt),
|
||||||
|
&def->virtio) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@ -13028,7 +13032,8 @@ virDomainRNGDefParseXML(virDomainXMLOptionPtr xmlopt,
|
|||||||
if (virDomainDeviceInfoParseXML(node, NULL, &def->info, flags) < 0)
|
if (virDomainDeviceInfoParseXML(node, NULL, &def->info, flags) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (virDomainVirtioOptionsParseXML(ctxt, &def->virtio) < 0)
|
if (virDomainVirtioOptionsParseXML(virXPathNode("./driver", ctxt),
|
||||||
|
&def->virtio) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@ -13096,7 +13101,8 @@ virDomainMemballoonDefParseXML(xmlNodePtr node,
|
|||||||
else if (virDomainDeviceInfoParseXML(node, NULL, &def->info, flags) < 0)
|
else if (virDomainDeviceInfoParseXML(node, NULL, &def->info, flags) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (virDomainVirtioOptionsParseXML(ctxt, &def->virtio) < 0)
|
if (virDomainVirtioOptionsParseXML(virXPathNode("./driver", ctxt),
|
||||||
|
&def->virtio) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@ -13681,6 +13687,10 @@ virDomainVideoDefParseXML(xmlNodePtr node,
|
|||||||
|
|
||||||
def->accel = virDomainVideoAccelDefParseXML(cur);
|
def->accel = virDomainVideoAccelDefParseXML(cur);
|
||||||
}
|
}
|
||||||
|
if (virXMLNodeNameEqual(cur, "driver")) {
|
||||||
|
if (virDomainVirtioOptionsParseXML(cur, &def->virtio) < 0)
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
cur = cur->next;
|
cur = cur->next;
|
||||||
}
|
}
|
||||||
@ -13759,9 +13769,6 @@ virDomainVideoDefParseXML(xmlNodePtr node,
|
|||||||
if (virDomainDeviceInfoParseXML(node, NULL, &def->info, flags) < 0)
|
if (virDomainDeviceInfoParseXML(node, NULL, &def->info, flags) < 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (virDomainVirtioOptionsParseXML(ctxt, &def->virtio) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
def->driver = virDomainVideoDriverDefParseXML(node);
|
def->driver = virDomainVideoDriverDefParseXML(node);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user