[libvirt] [PATCH v10 1/4] domifaddr: Implement the public APIs
Daniel P. Berrange
berrange at redhat.com
Mon Mar 16 13:56:41 UTC 2015
On Mon, Mar 16, 2015 at 08:42:18AM -0400, John Ferlan wrote:
>
>
> On 03/11/2015 07:09 AM, Daniel P. Berrange wrote:
> > From: Nehal J Wani <nehaljw.kkd1 at gmail.com>
> >
> > Define helper function virDomainInterfaceFree, which allows
> > the upper layer application to free the domain interface object
> > conveniently.
> >
> > The API is going to provide multiple methods by flags, e.g.
> > * Query guest agent
> > * Parse DHCP lease file
> >
> > include/libvirt/libvirt-domain.h
> > * Define virDomainInterfaceAddresses, virDomainInterfaceFree
> > * Define structs virDomainInterface, virDomainIPAddress
> >
> > src/driver-hypervisor.h:
> > * Define domainInterfaceAddresses
> >
> > src/libvirt-domain.c:
> > * Implement virDomainInterfaceAddresses
> > * Implement virDomainInterfaceFree
> >
> > src/libvirt_public.syms:
> > * Export the new symbols
> >
> > Signed-off-by: Nehal J Wani <nehaljw.kkd1 at gmail.com>
> > ---
> > include/libvirt/libvirt-domain.h | 32 ++++++++++
> > src/driver-hypervisor.h | 6 ++
> > src/libvirt-domain.c | 123 +++++++++++++++++++++++++++++++++++++++
> > src/libvirt_public.syms | 2 +
> > 4 files changed, 163 insertions(+)
> >
> > + * for (i = 0; i < ifaces_count; i++)
> > + * virDomainInterfaceFree(ifaces[i]);
> > + * free(ifaces);
> > + *
> > + * Returns the number of interfaces on success, -1 in case of error.
> > + */
> > +int
> > +virDomainInterfaceAddresses(virDomainPtr dom,
> > + virDomainInterfacePtr **ifaces,
> > + unsigned int source,
> > + unsigned int flags)
> > +{
> > + virConnectPtr conn;
> > +
> > + VIR_DOMAIN_DEBUG(dom, "ifaces=%p, source=%d, flags=%x", ifaces, source, flags);
> > +
> > + virResetLastError();
> > +
> > + conn = dom->conn;
>
> If 'dom' is NULL, then there's a pointer deref (considering check below)
>
> > +
> > + if (ifaces)
> > + *ifaces = NULL;
> > + virCheckDomainReturn(dom, -1);
> > + virCheckNonNullArgGoto(ifaces, error);
> > + virCheckReadOnlyGoto(conn->flags, error);
>
> I think I ran into this when I was adding the libvirt-perl code - since
> this is a get interface - does it really matter if it's readonly?
In this case it matters because we need to block access to the QEMU
guest agent.
>
> Also, I'd move both conn = dom->conn and "if (ifaces) *ifaces = NULL;"
> to here
I'll just delete the 'conn' var - it is fairly pointless and just causes
problems.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list