[libvirt] RFC: Introduce API to return configuration/state paths of the network driver
Daniel P. Berrange
berrange at redhat.com
Thu Aug 15 11:32:56 UTC 2013
On Wed, Aug 14, 2013 at 04:57:51AM +0530, Nehal J. Wani wrote:
> On Wed, Aug 14, 2013 at 4:29 AM, Eric Blake <eblake at redhat.com> wrote:
> >
> > On 08/13/2013 04:48 PM, Eric Blake wrote:
> >
> > >> virNetworkGetDHCPLeaseForMAC(virNetworkPtr network,
> > >> unsigned char *macaddr,
> > >
> > > I personally think the public API should stick to stringized
> > > representations. Yes, it's less friendly to machine code, but
> > > internally, our src/util/virmacaddr.h helps transfer between stringized
> > > and binary. Furthermore, we already have other API that operates on
> > > stringized versions, but none that operates on raw (see
> > > virDomainSetInterfaceParameters). Knowing what representation we are
> > > targetting impacts how this API will look.
> >
> > For comparison, look at the API for virDomainLookupByUUID (takes a raw
> > uuid - fixed number of bytes, unsigned char* argument) vs.
> > virDomainLookupByUUIDString (takes a stringized uuid, char* argument).
> > If efficiency were a concern, then I'd propose that we have two API:
> >
> > virNetworkGetDHCPLeaseForMAC(virNetworkPtr network,
> > unsigned char *macaddr, ...)
> >
> > virNetworkGetDHCPLeaseForMACString(virNetworkPtr network,
> > char *macaddr, ...)
> >
> > But I don't think efficiency is a concern, and rather than add a new API
> > that has to have dual forms, I'd rather stick with the shorter name but
> > using the stringized form of MAC.
> >
> > --
> > Eric Blake eblake redhat com +1-919-301-3266
> > Libvirt virtualization library http://libvirt.org
> >
>
> I would like to see the API as:
>
> /**
> * virNetworkGetDHCPLeases:
> * @network: pointer to network object
> * @macaddr: MAC Address of an interface
> * @leases: pointer to an array of structs which will hold the leases
> * @nleases: number of leases in output
> * @flags: extra flags, not used yet, so callers should always pass 0
> *
> * The API returns the leases of all interfaces by default, and if
> * @macaddr is specified,.only the lease of the interface which
> * matches the @macaddr is returned.
> *
> * Returns number of leases on success, -1 otherwise
> */
> int virNetworkGetDHCPLeases(virNetworkPtr network,
> const char *macaddr,
> virNetworkDHCPLeasesPtr *leases,
> int *nleases,
> unsigned int flags);
In common with my feedback on the other IP addr API, I'd
suggest that we should use virNetworkDHCPLeasesPtr **leases,
e an array of pointers to objects, not an array of objects.
And remove the nleases parameter - just use the return value
Also I'd like to see two separate APIs here - one to get a list
of all leases, and one to get the single lease for a specific
MAC address.
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