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@xxxxxxxxxx> > --- > 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list