On Tue, Jul 07, 2015 at 03:17:37PM +0100, Zeeshan Ali (Khattak) wrote: > --- > libvirt-gobject/libvirt-gobject-network.c | 55 +++++++++++++++++++++++++++++++ > libvirt-gobject/libvirt-gobject-network.h | 4 +++ > libvirt-gobject/libvirt-gobject.sym | 2 ++ > 3 files changed, 61 insertions(+) > > diff --git a/libvirt-gobject/libvirt-gobject-network.c b/libvirt-gobject/libvirt-gobject-network.c > index b1b38a0..2a7bed6 100644 > --- a/libvirt-gobject/libvirt-gobject-network.c > +++ b/libvirt-gobject/libvirt-gobject-network.c > @@ -29,6 +29,7 @@ > #include "libvirt-glib/libvirt-glib.h" > #include "libvirt-gobject/libvirt-gobject.h" > #include "libvirt-gobject-compat.h" > +#include "libvirt-gobject/libvirt-gobject-network-dhcp-lease-private.h" > > #define GVIR_NETWORK_GET_PRIVATE(obj) \ > (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_TYPE_NETWORK, GVirNetworkPrivate)) > @@ -224,3 +225,57 @@ GVirConfigNetwork *gvir_network_get_config(GVirNetwork *network, > free(xml); > return conf; > } > + > +/** > + * gvir_network_get_dhcp_leases: > + * @network: the network > + * @mac: (allow-none): The optional ASCII formatted MAC address of an interface > + * @flags: placeholder for flags, must be 0 > + * > + * @err: Place-holder for possible errors > + * > + * This function fetches leases info of guests in the specified network. If the > + * optional parameter @mac is specified, the returned list will contain only > + * lease info about a specific guest interface with @mac. There can be multiple > + * leases for a single @mac because this API supports DHCPv6 too. > + * > + * Returns: (element-type LibvirtGObject.NetworkDHCPLease) (transfer full): the > + * list of network leases. Each object in the returned list should be unreffed > + * with g_object_unref() and the list itself using g_list_free, when no longer > + * needed. > + */ > +GList *gvir_network_get_dhcp_leases(GVirNetwork *network, > + const char* mac, > + guint flags, > + GError **err) > +{ > + virNetworkDHCPLeasePtr *leases; > + GList *ret = NULL; > + int num_leases, i; > + > + g_return_val_if_fail(GVIR_IS_NETWORK(network), NULL); > + g_return_val_if_fail(err == NULL || *err == NULL, NULL); > + g_return_val_if_fail(flags != 0, NULL); > + > + num_leases = virNetworkGetDHCPLeases(network->priv->handle, mac, &leases, flags); > + if (num_leases < 0) { > + gvir_set_error_literal(err, GVIR_NETWORK_ERROR, > + 0, > + "Unable to get network DHCP leases"); > + return NULL; > + } > + > + if (num_leases == 0) > + return NULL; > + > + for (i = 0; i < num_leases; i++) { > + GVirNetworkDHCPLease *lease; > + > + lease = gvir_network_dhcp_lease_new(leases[i]); > + ret = g_list_prepend(ret, lease); > + } > + ret = g_list_reverse(ret); > + free(leases); > + > + return ret; Could be return g_list_reverse(ret); and drop the ret = g_list_reverse(ret); above, but both are good for me. Christophe
Attachment:
pgpG1gMvBVPHt.pgp
Description: PGP signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list