[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH 03/10] Add namespace callback hooks to domain_conf.



On Wed, Apr 21, 2010 at 12:01:17PM -0400, Chris Lalancette wrote:
> This patch adds namespace XML parsers to be hooked into
> the main domain parser.  This allows for individual hypervisor
> drivers to add per-namespace XML into the main domain XML.
> 
> Signed-off-by: Chris Lalancette <clalance redhat com>
> ---
>  src/conf/capabilities.c |    2 ++
>  src/conf/capabilities.h |   17 +++++++++++++++++
>  src/conf/domain_conf.c  |   44 +++++++++++++++++++++++++++++++++++++-------
>  src/conf/domain_conf.h  |    3 +++
>  4 files changed, 59 insertions(+), 7 deletions(-)
> 
> diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
> index dafd821..d4a6070 100644
> --- a/src/conf/capabilities.c
> +++ b/src/conf/capabilities.c
> @@ -174,6 +174,8 @@ virCapabilitiesFree(virCapsPtr caps) {
>      VIR_FREE(caps->host.secModel.doi);
>      virCPUDefFree(caps->host.cpu);
>  
> +    VIR_FREE(caps->ns);
> +
>      VIR_FREE(caps);
>  }

I'm inclined to say caps->ns can just be a pointer to a statically
declared table as we with for the main driver function tables,
avoiding need to free it.

> @@ -4366,6 +4372,22 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
>              goto error;
>      }
>  
> +    /* callout to per-namespace parsers (in the individual drivers) */
> +    if (caps->ns) {
> +        /* we have to make a copy of all of the callback pointers here since
> +         * we won't have the virCaps structure available during free
> +         */
> +        def->ns.parse = caps->ns->parse;
> +        def->ns.free = caps->ns->free;
> +        def->ns.format = caps->ns->format;
> +        def->ns.href = caps->ns->href;
> +
> +        if (def->ns.parse) {
> +            if ((def->ns.parse)(xml, root, ctxt, &def->namespaceData) < 0)
> +                goto error;
> +        }
> +    }

If we're using the static driver tables, we can just use a plain assignment
here like    'def->ns = caps->ns"


Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]