[libvirt] [PATCH] net: merge virNetworkGetDHCPLeases and virNetworkGetDHCPLeasesForMAC
Peter Krempa
pkrempa at redhat.com
Fri Jun 27 07:45:09 UTC 2014
On 06/26/14 17:29, Ján Tomko wrote:
> On 06/26/2014 04:51 PM, Peter Krempa wrote:
>> Instead of maintaining two very similar APIs, add the "@mac" parameter
>> to virNetworkGetDHCPLeases and kill virNetworkGetDHCPLeasesForMAC. Both
>> of those functions would return data the same way, so making @mac an
>> optional filter simplifies a lot of stuff.
>> ---
>> daemon/remote.c | 69 +-----------------------------------------
>> include/libvirt/libvirt.h.in | 6 +---
>> src/driver.h | 8 +----
>> src/libvirt.c | 70 ++++++-------------------------------------
>> src/libvirt_public.syms | 1 -
>> src/network/bridge_driver.c | 69 +++++++++++-------------------------------
>> src/remote/remote_driver.c | 71 ++------------------------------------------
>> src/remote/remote_protocol.x | 20 ++-----------
>> src/remote_protocol-structs | 15 +---------
>> tools/virsh-network.c | 5 +---
>> 10 files changed, 35 insertions(+), 299 deletions(-)
>>
>
>> diff --git a/src/libvirt.c b/src/libvirt.c
>> index 566f984..49c9d16 100644
>> --- a/src/libvirt.c
>> +++ b/src/libvirt.c
>
>> @@ -21110,65 +21117,6 @@ virNetworkGetDHCPLeases(virNetworkPtr network,
>> return -1;
>> }
>>
>> -/**
>> - * virNetworkGetDHCPLeasesForMAC:
>> - * @network: Pointer to network object
>> - * @mac: ASCII formatted MAC address of an interface
>> - * @leases: Pointer to a variable to store the array containing details on
>> - * obtained leases, or NULL if the list is not required (just returns
>> - * number of leases).
>> - * @flags: extra flags, not used yet, so callers should always pass 0
>> - *
>> - * The API fetches leases info of the interface which matches with the
>> - * given @mac. There can be multiple leases for a single @mac because this
>> - * API supports DHCPv6 too.
>> - *
>> - * Returns the number of leases found or -1 and sets @leases to NULL in case of
>> - * error. On success, the array stored into @leases is guaranteed to have an
>> - * extra allocated element set to NULL but not included in the return count,
>> - * to make iteration easier. The caller is responsible for calling
>> - * virNetworkDHCPLeaseFree() on each array element, then calling free() on @leases.
>> - *
>> - * See virNetworkGetDHCPLeases() for more details on list contents.
>> - */
>> -int
>> -virNetworkGetDHCPLeasesForMAC(virNetworkPtr network,
>> - const char *mac,
>> - virNetworkDHCPLeasePtr **leases,
>> - unsigned int flags)
>> -{
>> - virConnectPtr conn;
>> -
>> - VIR_DEBUG("network=%p, mac=%s, leases=%p, flags=%x",
>> - network, mac, leases, flags);
>
> You should add mac to the debug message at the start of the other API.
>
>> -
>> - virResetLastError();
>> -
>> - if (leases)
>> - *leases = NULL;
>> -
>> - virCheckNonNullArgGoto(mac, error);
>> -
>> - virCheckNetworkReturn(network, -1);
>
>
>> --- a/src/remote/remote_driver.c
>> +++ b/src/remote/remote_driver.c
>> @@ -7614,6 +7615,7 @@ remoteNetworkGetDHCPLeases(virNetworkPtr net,
>> remoteDriverLock(priv);
>>
>> make_nonnull_network(&args.net, net);
>> + args.mac = mac == NULL ? NULL : (char **) &mac;
>
> Nit: mac ? (char **) &mac : NULL would be IMO nicer.
>
>> args.flags = flags;
>> args.need_results = !!leases;
>>
>
>> diff --git a/tools/virsh-network.c b/tools/virsh-network.c
>> index 2d5b9be..e7499fa 100644
>> --- a/tools/virsh-network.c
>> +++ b/tools/virsh-network.c
>> @@ -1348,10 +1348,7 @@ cmdNetworkDHCPLeases(vshControl *ctl, const vshCmd *cmd)
>> if (!(network = vshCommandOptNetwork(ctl, cmd, &name)))
>> return false;
>>
>> - nleases = mac ? virNetworkGetDHCPLeasesForMAC(network, mac, &leases, flags)
>> - : virNetworkGetDHCPLeases(network, &leases, flags);
>> -
>> - if (nleases < 0) {
>> + if ((nleases = virNetworkGetDHCPLeases(network, mac, &leases, flags) < 0)) {
>
> Wrong parenthesising.
>
> ACK with the debug message added and virsh functionality fixed.
>
> Jan
>
I've resolved all your comments and pushed this patch.
Thanks
Peter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 901 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140627/8e6c352c/attachment-0001.sig>
More information about the libvir-list
mailing list