[libvirt] [PATCH v2 4/4] conf: Parse more of our nodedev XML
Andrea Bolognani
abologna at redhat.com
Fri Apr 15 16:14:47 UTC 2016
On Wed, 2016-04-13 at 16:37 +0200, Martin Kletzander wrote:
> We were lacking tests that are checking for the completeness of our
> nodedev XMLs and also whether we output properly formatted ones. This
> patch adds parsing for the capability elements inside the <capability
> type='pci'> element. Also bunch of tests are added to show everything
> works properly.
>
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
> src/conf/node_device_conf.c | 98 +++++++++++++++++++++++++++++++++++++++++++++
> tests/nodedevxml2xmltest.c | 7 ++++
> 2 files changed, 105 insertions(+)
>
> diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
> index b6e2f82727d0..5a41f7e0d2cc 100644
> --- a/src/conf/node_device_conf.c
> +++ b/src/conf/node_device_conf.c
> @@ -1269,15 +1269,103 @@ virPCIEDeviceInfoParseXML(xmlXPathContextPtr ctxt,
>
>
> static int
> +virNodeDevPCICapabilityParseXML(xmlXPathContextPtr ctxt,
> + xmlNodePtr node,
> + virNodeDevCapDataPtr data)
> +{
> + char *maxFuncsStr = virXMLPropString(node, "maxCount");
maxCountStr?
> + char *type = virXMLPropString(node, "type");
typeStr?
> @@ -1321,6 +1409,15 @@ virNodeDevCapPCIDevParseXML(xmlXPathContextPtr ctxt,
> data->pci_dev.vendor_name = virXPathString("string(./vendor[1])", ctxt);
> data->pci_dev.product_name = virXPathString("string(./product[1])", ctxt);
>
> + if ((n = virXPathNodeSet("./capability", ctxt, &nodes)) < 0)
> + goto out;
> +
> + for (i = 0; i < n; i++) {
> + if (virNodeDevPCICapabilityParseXML(ctxt, nodes[i], data) < 0)
> + goto out;
> + }
> + VIR_FREE(nodes);
This shouldn't be necessary as you free the memory in the
out path anyway.
Cheers.
--
Andrea Bolognani
Software Engineer - Virtualization Team
More information about the libvir-list
mailing list