[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