[libvirt] [PATCH 04/12] Move virNetwork related APIs out of libvirt.c

Daniel P. Berrange berrange at redhat.com
Wed Oct 22 17:14:54 UTC 2014


Introduce a src/libvirt-network.c file to hold all the
methods related to the virNetwork type.
---
 docs/apibuild.py      |    1 +
 po/POTFILES.in        |    1 +
 src/Makefile.am       |    2 +
 src/libvirt-network.c | 1251 +++++++++++++++++++++++++++++++++++++++++++++++++
 src/libvirt.c         | 1221 -----------------------------------------------
 5 files changed, 1255 insertions(+), 1221 deletions(-)
 create mode 100644 src/libvirt-network.c

diff --git a/docs/apibuild.py b/docs/apibuild.py
index b5bd936..9e394c9 100755
--- a/docs/apibuild.py
+++ b/docs/apibuild.py
@@ -25,6 +25,7 @@ included_files = {
   "virterror.h": "header with error specific API definitions",
   "libvirt.c": "Main interfaces for the libvirt library",
   "libvirt-domain-snapshot.c": "Domain snapshot interfaces for the libvirt library",
+  "libvirt-network.c": "Network interfaces for the libvirt library",
   "virerror.c": "implements error handling and reporting code for libvirt",
   "virevent.c": "event loop for monitoring file handles",
   "virtypedparam.c": "virTypedParameters APIs",
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 6f88a15..0ddc834 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -59,6 +59,7 @@ src/internal.h
 src/libvirt.c
 src/libvirt-domain-snapshot.c
 src/libvirt-lxc.c
+src/libvirt-network.c
 src/libvirt-qemu.c
 src/locking/lock_daemon.c
 src/locking/lock_daemon_config.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 1b0a97d..c70fc49 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -190,6 +190,7 @@ DRIVER_SOURCES =							\
 		$(NODE_INFO_SOURCES)					\
 		libvirt.c libvirt_internal.h				\
 		libvirt-domain-snapshot.c 				\
+		libvirt-network.c	 				\
 		locking/lock_manager.c locking/lock_manager.h		\
 		locking/lock_driver.h					\
 		locking/lock_driver_nop.h locking/lock_driver_nop.c	\
@@ -2188,6 +2189,7 @@ libvirt_setuid_rpc_client_la_SOURCES = 		\
 		datatypes.c			\
 		libvirt.c			\
 		libvirt-domain-snapshot.c	\
+		libvirt-network.c		\
 		libvirt-lxc.c			\
 		$(NULL)
 
diff --git a/src/libvirt-network.c b/src/libvirt-network.c
new file mode 100644
index 0000000..36aec61
--- /dev/null
+++ b/src/libvirt-network.c
@@ -0,0 +1,1251 @@
+/*
+ * libvirt-network.c: entry points for virNetworkPtr APIs
+ *
+ * Copyright (C) 2006-2014 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+
+#include "datatypes.h"
+#include "viralloc.h"
+#include "virlog.h"
+
+VIR_LOG_INIT("libvirt.network");
+
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+/**
+ * virNetworkGetConnect:
+ * @net: pointer to a network
+ *
+ * Provides the connection pointer associated with a network.  The
+ * reference counter on the connection is not increased by this
+ * call.
+ *
+ * WARNING: When writing libvirt bindings in other languages, do
+ * not use this function.  Instead, store the connection and
+ * the network object together.
+ *
+ * Returns the virConnectPtr or NULL in case of failure.
+ */
+virConnectPtr
+virNetworkGetConnect(virNetworkPtr net)
+{
+    VIR_DEBUG("net=%p", net);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(net, NULL);
+
+    return net->conn;
+}
+
+
+/**
+ * virConnectListAllNetworks:
+ * @conn: Pointer to the hypervisor connection.
+ * @nets: Pointer to a variable to store the array containing the network
+ *        objects or NULL if the list is not required (just returns number
+ *        of networks).
+ * @flags: bitwise-OR of virConnectListAllNetworksFlags.
+ *
+ * Collect the list of networks, and allocate an array to store those
+ * objects. This API solves the race inherent between virConnectListNetworks
+ * and virConnectListDefinedNetworks.
+ *
+ * Normally, all networks are returned; however, @flags can be used to
+ * filter the results for a smaller list of targeted networks.  The valid
+ * flags are divided into groups, where each group contains bits that
+ * describe mutually exclusive attributes of a network, and where all bits
+ * within a group describe all possible networks.
+ *
+ * The first group of @flags is VIR_CONNECT_LIST_NETWORKS_ACTIVE (up) and
+ * VIR_CONNECT_LIST_NETWORKS_INACTIVE (down) to filter the networks by state.
+ *
+ * The second group of @flags is VIR_CONNECT_LIST_NETWORKS_PERSISTENT (defined)
+ * and VIR_CONNECT_LIST_NETWORKS_TRANSIENT (running but not defined), to filter
+ * the networks by whether they have persistent config or not.
+ *
+ * The third group of @flags is VIR_CONNECT_LIST_NETWORKS_AUTOSTART
+ * and VIR_CONNECT_LIST_NETWORKS_NO_AUTOSTART, to filter the networks by
+ * whether they are marked as autostart or not.
+ *
+ * Returns the number of networks found or -1 and sets @nets to  NULL in case
+ * of error.  On success, the array stored into @nets 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
+ * virNetworkFree() on each array element, then calling free() on @nets.
+ */
+int
+virConnectListAllNetworks(virConnectPtr conn,
+                          virNetworkPtr **nets,
+                          unsigned int flags)
+{
+    VIR_DEBUG("conn=%p, nets=%p, flags=%x", conn, nets, flags);
+
+    virResetLastError();
+
+    if (nets)
+        *nets = NULL;
+
+    virCheckConnectReturn(conn, -1);
+
+    if (conn->networkDriver &&
+        conn->networkDriver->connectListAllNetworks) {
+        int ret;
+        ret = conn->networkDriver->connectListAllNetworks(conn, nets, flags);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return -1;
+}
+
+
+/**
+ * virConnectNumOfNetworks:
+ * @conn: pointer to the hypervisor connection
+ *
+ * Provides the number of active networks.
+ *
+ * Returns the number of network found or -1 in case of error
+ */
+int
+virConnectNumOfNetworks(virConnectPtr conn)
+{
+    VIR_DEBUG("conn=%p", conn);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, -1);
+
+    if (conn->networkDriver && conn->networkDriver->connectNumOfNetworks) {
+        int ret;
+        ret = conn->networkDriver->connectNumOfNetworks(conn);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return -1;
+}
+
+
+/**
+ * virConnectListNetworks:
+ * @conn: pointer to the hypervisor connection
+ * @names: array to collect the list of names of active networks
+ * @maxnames: size of @names
+ *
+ * Collect the list of active networks, and store their names in @names
+ *
+ * For more control over the results, see virConnectListAllNetworks().
+ *
+ * Returns the number of networks found or -1 in case of error.  Note that
+ * this command is inherently racy; a network can be started between a call
+ * to virConnectNumOfNetworks() and this call; you are only guaranteed that
+ * all currently active networks were listed if the return is less than
+ * @maxnames. The client must call free() on each returned name.
+ */
+int
+virConnectListNetworks(virConnectPtr conn, char **const names, int maxnames)
+{
+    VIR_DEBUG("conn=%p, names=%p, maxnames=%d", conn, names, maxnames);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, -1);
+    virCheckNonNullArgGoto(names, error);
+    virCheckNonNegativeArgGoto(maxnames, error);
+
+    if (conn->networkDriver && conn->networkDriver->connectListNetworks) {
+        int ret;
+        ret = conn->networkDriver->connectListNetworks(conn, names, maxnames);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return -1;
+}
+
+
+/**
+ * virConnectNumOfDefinedNetworks:
+ * @conn: pointer to the hypervisor connection
+ *
+ * Provides the number of inactive networks.
+ *
+ * Returns the number of networks found or -1 in case of error
+ */
+int
+virConnectNumOfDefinedNetworks(virConnectPtr conn)
+{
+    VIR_DEBUG("conn=%p", conn);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, -1);
+
+    if (conn->networkDriver && conn->networkDriver->connectNumOfDefinedNetworks) {
+        int ret;
+        ret = conn->networkDriver->connectNumOfDefinedNetworks(conn);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return -1;
+}
+
+
+/**
+ * virConnectListDefinedNetworks:
+ * @conn: pointer to the hypervisor connection
+ * @names: pointer to an array to store the names
+ * @maxnames: size of the array
+ *
+ * list the inactive networks, stores the pointers to the names in @names
+ *
+ * For more control over the results, see virConnectListAllNetworks().
+ *
+ * Returns the number of names provided in the array or -1 in case of error.
+ * Note that this command is inherently racy; a network can be defined between
+ * a call to virConnectNumOfDefinedNetworks() and this call; you are only
+ * guaranteed that all currently defined networks were listed if the return
+ * is less than @maxnames.  The client must call free() on each returned name.
+ */
+int
+virConnectListDefinedNetworks(virConnectPtr conn, char **const names,
+                              int maxnames)
+{
+    VIR_DEBUG("conn=%p, names=%p, maxnames=%d", conn, names, maxnames);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, -1);
+    virCheckNonNullArgGoto(names, error);
+    virCheckNonNegativeArgGoto(maxnames, error);
+
+    if (conn->networkDriver && conn->networkDriver->connectListDefinedNetworks) {
+        int ret;
+        ret = conn->networkDriver->connectListDefinedNetworks(conn, names, maxnames);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkLookupByName:
+ * @conn: pointer to the hypervisor connection
+ * @name: name for the network
+ *
+ * Try to lookup a network on the given hypervisor based on its name.
+ *
+ * virNetworkFree should be used to free the resources after the
+ * network object is no longer needed.
+ *
+ * Returns a new network object or NULL in case of failure.  If the
+ * network cannot be found, then VIR_ERR_NO_NETWORK error is raised.
+ */
+virNetworkPtr
+virNetworkLookupByName(virConnectPtr conn, const char *name)
+{
+    VIR_DEBUG("conn=%p, name=%s", conn, name);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, NULL);
+    virCheckNonNullArgGoto(name, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkLookupByName) {
+        virNetworkPtr ret;
+        ret = conn->networkDriver->networkLookupByName(conn, name);
+        if (!ret)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return NULL;
+}
+
+
+/**
+ * virNetworkLookupByUUID:
+ * @conn: pointer to the hypervisor connection
+ * @uuid: the raw UUID for the network
+ *
+ * Try to lookup a network on the given hypervisor based on its UUID.
+ *
+ * virNetworkFree should be used to free the resources after the
+ * network object is no longer needed.
+ *
+ * Returns a new network object or NULL in case of failure.  If the
+ * network cannot be found, then VIR_ERR_NO_NETWORK error is raised.
+ */
+virNetworkPtr
+virNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
+{
+    VIR_UUID_DEBUG(conn, uuid);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, NULL);
+    virCheckNonNullArgGoto(uuid, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkLookupByUUID) {
+        virNetworkPtr ret;
+        ret = conn->networkDriver->networkLookupByUUID(conn, uuid);
+        if (!ret)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return NULL;
+}
+
+
+/**
+ * virNetworkLookupByUUIDString:
+ * @conn: pointer to the hypervisor connection
+ * @uuidstr: the string UUID for the network
+ *
+ * Try to lookup a network on the given hypervisor based on its UUID.
+ *
+ * Returns a new network object or NULL in case of failure.  If the
+ * network cannot be found, then VIR_ERR_NO_NETWORK error is raised.
+ */
+virNetworkPtr
+virNetworkLookupByUUIDString(virConnectPtr conn, const char *uuidstr)
+{
+    unsigned char uuid[VIR_UUID_BUFLEN];
+    VIR_DEBUG("conn=%p, uuidstr=%s", conn, NULLSTR(uuidstr));
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, NULL);
+    virCheckNonNullArgGoto(uuidstr, error);
+
+    if (virUUIDParse(uuidstr, uuid) < 0) {
+        virReportInvalidArg(uuidstr,
+                            _("uuidstr in %s must be a valid UUID"),
+                            __FUNCTION__);
+        goto error;
+    }
+
+    return virNetworkLookupByUUID(conn, &uuid[0]);
+
+ error:
+    virDispatchError(conn);
+    return NULL;
+}
+
+
+/**
+ * virNetworkCreateXML:
+ * @conn: pointer to the hypervisor connection
+ * @xmlDesc: an XML description of the network
+ *
+ * Create and start a new virtual network, based on an XML description
+ * similar to the one returned by virNetworkGetXMLDesc()
+ *
+ * virNetworkFree should be used to free the resources after the
+ * network object is no longer needed.
+ *
+ * Returns a new network object or NULL in case of failure
+ */
+virNetworkPtr
+virNetworkCreateXML(virConnectPtr conn, const char *xmlDesc)
+{
+    VIR_DEBUG("conn=%p, xmlDesc=%s", conn, xmlDesc);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, NULL);
+    virCheckNonNullArgGoto(xmlDesc, error);
+    virCheckReadOnlyGoto(conn->flags, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkCreateXML) {
+        virNetworkPtr ret;
+        ret = conn->networkDriver->networkCreateXML(conn, xmlDesc);
+        if (!ret)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return NULL;
+}
+
+
+/**
+ * virNetworkDefineXML:
+ * @conn: pointer to the hypervisor connection
+ * @xml: the XML description for the network, preferably in UTF-8
+ *
+ * Define a network, but does not create it
+ *
+ * virNetworkFree should be used to free the resources after the
+ * network object is no longer needed.
+ *
+ * Returns NULL in case of error, a pointer to the network otherwise
+ */
+virNetworkPtr
+virNetworkDefineXML(virConnectPtr conn, const char *xml)
+{
+    VIR_DEBUG("conn=%p, xml=%s", conn, xml);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, NULL);
+    virCheckReadOnlyGoto(conn->flags, error);
+    virCheckNonNullArgGoto(xml, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkDefineXML) {
+        virNetworkPtr ret;
+        ret = conn->networkDriver->networkDefineXML(conn, xml);
+        if (!ret)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(conn);
+    return NULL;
+}
+
+
+/**
+ * virNetworkUndefine:
+ * @network: pointer to a defined network
+ *
+ * Undefine a network but does not stop it if it is running
+ *
+ * Returns 0 in case of success, -1 in case of error
+ */
+int
+virNetworkUndefine(virNetworkPtr network)
+{
+    virConnectPtr conn;
+    VIR_DEBUG("network=%p", network);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+    conn = network->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkUndefine) {
+        int ret;
+        ret = conn->networkDriver->networkUndefine(network);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(network->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkUpdate:
+ * @network: pointer to a defined network
+ * @section: which section of the network to update
+ *           (see virNetworkUpdateSection for descriptions)
+ * @command: what action to perform (add/delete/modify)
+ *           (see virNetworkUpdateCommand for descriptions)
+ * @parentIndex: which parent element, if there are multiple parents
+ *           of the same type (e.g. which <ip> element when modifying
+ *           a <dhcp>/<host> element), or "-1" for "don't care" or
+ *           "automatically find appropriate one".
+ * @xml: the XML description for the network, preferably in UTF-8
+ * @flags: bitwise OR of virNetworkUpdateFlags.
+ *
+ * Update the definition of an existing network, either its live
+ * running state, its persistent configuration, or both.
+ *
+ * Returns 0 in case of success, -1 in case of error
+ */
+int
+virNetworkUpdate(virNetworkPtr network,
+                 unsigned int command, /* virNetworkUpdateCommand */
+                 unsigned int section, /* virNetworkUpdateSection */
+                 int parentIndex,
+                 const char *xml,
+                 unsigned int flags)
+{
+    virConnectPtr conn;
+    VIR_DEBUG("network=%p, section=%d, parentIndex=%d, xml=%s, flags=0x%x",
+              network, section, parentIndex, xml, flags);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+    conn = network->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
+    virCheckNonNullArgGoto(xml, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkUpdate) {
+        int ret;
+        ret = conn->networkDriver->networkUpdate(network, section, command,
+                                                 parentIndex, xml, flags);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(network->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkCreate:
+ * @network: pointer to a defined network
+ *
+ * Create and start a defined network. If the call succeed the network
+ * moves from the defined to the running networks pools.
+ *
+ * Returns 0 in case of success, -1 in case of error
+ */
+int
+virNetworkCreate(virNetworkPtr network)
+{
+    virConnectPtr conn;
+    VIR_DEBUG("network=%p", network);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+    conn = network->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkCreate) {
+        int ret;
+        ret = conn->networkDriver->networkCreate(network);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(network->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkDestroy:
+ * @network: a network object
+ *
+ * Destroy the network object. The running instance is shutdown if not down
+ * already and all resources used by it are given back to the hypervisor. This
+ * does not free the associated virNetworkPtr object.
+ * This function may require privileged access
+ *
+ * Returns 0 in case of success and -1 in case of failure.
+ */
+int
+virNetworkDestroy(virNetworkPtr network)
+{
+    virConnectPtr conn;
+    VIR_DEBUG("network=%p", network);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+    conn = network->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkDestroy) {
+        int ret;
+        ret = conn->networkDriver->networkDestroy(network);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(network->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkFree:
+ * @network: a network object
+ *
+ * Free the network object. The running instance is kept alive.
+ * The data structure is freed and should not be used thereafter.
+ *
+ * Returns 0 in case of success and -1 in case of failure.
+ */
+int
+virNetworkFree(virNetworkPtr network)
+{
+    VIR_DEBUG("network=%p", network);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+
+    virObjectUnref(network);
+    return 0;
+}
+
+
+/**
+ * virNetworkRef:
+ * @network: the network to hold a reference on
+ *
+ * Increment the reference count on the network. For each
+ * additional call to this method, there shall be a corresponding
+ * call to virNetworkFree to release the reference count, once
+ * the caller no longer needs the reference to this object.
+ *
+ * This method is typically useful for applications where multiple
+ * threads are using a connection, and it is required that the
+ * connection remain open until all threads have finished using
+ * it. ie, each new thread using a network would increment
+ * the reference count.
+ *
+ * Returns 0 in case of success, -1 in case of failure.
+ */
+int
+virNetworkRef(virNetworkPtr network)
+{
+    VIR_DEBUG("network=%p refs=%d", network,
+              network ? network->object.u.s.refs : 0);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+
+    virObjectRef(network);
+    return 0;
+}
+
+
+/**
+ * virNetworkGetName:
+ * @network: a network object
+ *
+ * Get the public name for that network
+ *
+ * Returns a pointer to the name or NULL, the string need not be deallocated
+ * its lifetime will be the same as the network object.
+ */
+const char *
+virNetworkGetName(virNetworkPtr network)
+{
+    VIR_DEBUG("network=%p", network);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, NULL);
+
+    return network->name;
+}
+
+
+/**
+ * virNetworkGetUUID:
+ * @network: a network object
+ * @uuid: pointer to a VIR_UUID_BUFLEN bytes array
+ *
+ * Get the UUID for a network
+ *
+ * Returns -1 in case of error, 0 in case of success
+ */
+int
+virNetworkGetUUID(virNetworkPtr network, unsigned char *uuid)
+{
+    VIR_DEBUG("network=%p, uuid=%p", network, uuid);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+    virCheckNonNullArgGoto(uuid, error);
+
+    memcpy(uuid, &network->uuid[0], VIR_UUID_BUFLEN);
+
+    return 0;
+
+ error:
+    virDispatchError(network->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkGetUUIDString:
+ * @network: a network object
+ * @buf: pointer to a VIR_UUID_STRING_BUFLEN bytes array
+ *
+ * Get the UUID for a network as string. For more information about
+ * UUID see RFC4122.
+ *
+ * Returns -1 in case of error, 0 in case of success
+ */
+int
+virNetworkGetUUIDString(virNetworkPtr network, char *buf)
+{
+    VIR_DEBUG("network=%p, buf=%p", network, buf);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+    virCheckNonNullArgGoto(buf, error);
+
+    virUUIDFormat(network->uuid, buf);
+    return 0;
+
+ error:
+    virDispatchError(network->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkGetXMLDesc:
+ * @network: a network object
+ * @flags: bitwise-OR of virNetworkXMLFlags
+ *
+ * Provide an XML description of the network. The description may be reused
+ * later to relaunch the network with virNetworkCreateXML().
+ *
+ * Normally, if a network included a physical function, the output includes
+ * all virtual functions tied to that physical interface.  If @flags includes
+ * VIR_NETWORK_XML_INACTIVE, then the expansion of virtual interfaces is
+ * not performed.
+ *
+ * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
+ *         the caller must free() the returned value.
+ */
+char *
+virNetworkGetXMLDesc(virNetworkPtr network, unsigned int flags)
+{
+    virConnectPtr conn;
+    VIR_DEBUG("network=%p, flags=%x", network, flags);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, NULL);
+    conn = network->conn;
+
+    if (conn->networkDriver && conn->networkDriver->networkGetXMLDesc) {
+        char *ret;
+        ret = conn->networkDriver->networkGetXMLDesc(network, flags);
+        if (!ret)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(network->conn);
+    return NULL;
+}
+
+
+/**
+ * virNetworkGetBridgeName:
+ * @network: a network object
+ *
+ * Provides a bridge interface name to which a domain may connect
+ * a network interface in order to join the network.
+ *
+ * Returns a 0 terminated interface name, or NULL in case of error.
+ *         the caller must free() the returned value.
+ */
+char *
+virNetworkGetBridgeName(virNetworkPtr network)
+{
+    virConnectPtr conn;
+    VIR_DEBUG("network=%p", network);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, NULL);
+    conn = network->conn;
+
+    if (conn->networkDriver && conn->networkDriver->networkGetBridgeName) {
+        char *ret;
+        ret = conn->networkDriver->networkGetBridgeName(network);
+        if (!ret)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(network->conn);
+    return NULL;
+}
+
+
+/**
+ * virNetworkGetAutostart:
+ * @network: a network object
+ * @autostart: the value returned
+ *
+ * Provides a boolean value indicating whether the network
+ * configured to be automatically started when the host
+ * machine boots.
+ *
+ * Returns -1 in case of error, 0 in case of success
+ */
+int
+virNetworkGetAutostart(virNetworkPtr network,
+                       int *autostart)
+{
+    virConnectPtr conn;
+    VIR_DEBUG("network=%p, autostart=%p", network, autostart);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+    virCheckNonNullArgGoto(autostart, error);
+
+    conn = network->conn;
+
+    if (conn->networkDriver && conn->networkDriver->networkGetAutostart) {
+        int ret;
+        ret = conn->networkDriver->networkGetAutostart(network, autostart);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(network->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkSetAutostart:
+ * @network: a network object
+ * @autostart: whether the network should be automatically started 0 or 1
+ *
+ * Configure the network to be automatically started
+ * when the host machine boots.
+ *
+ * Returns -1 in case of error, 0 in case of success
+ */
+int
+virNetworkSetAutostart(virNetworkPtr network,
+                       int autostart)
+{
+    virConnectPtr conn;
+    VIR_DEBUG("network=%p, autostart=%d", network, autostart);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(network, -1);
+    conn = network->conn;
+
+    virCheckReadOnlyGoto(conn->flags, error);
+
+    if (conn->networkDriver && conn->networkDriver->networkSetAutostart) {
+        int ret;
+        ret = conn->networkDriver->networkSetAutostart(network, autostart);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(network->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkIsActive:
+ * @net: pointer to the network object
+ *
+ * Determine if the network is currently running
+ *
+ * Returns 1 if running, 0 if inactive, -1 on error
+ */
+int
+virNetworkIsActive(virNetworkPtr net)
+{
+    VIR_DEBUG("net=%p", net);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(net, -1);
+
+    if (net->conn->networkDriver->networkIsActive) {
+        int ret;
+        ret = net->conn->networkDriver->networkIsActive(net);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+ error:
+    virDispatchError(net->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkIsPersistent:
+ * @net: pointer to the network object
+ *
+ * Determine if the network has a persistent configuration
+ * which means it will still exist after shutting down
+ *
+ * Returns 1 if persistent, 0 if transient, -1 on error
+ */
+int
+virNetworkIsPersistent(virNetworkPtr net)
+{
+    VIR_DEBUG("net=%p", net);
+
+    virResetLastError();
+
+    virCheckNetworkReturn(net, -1);
+
+    if (net->conn->networkDriver->networkIsPersistent) {
+        int ret;
+        ret = net->conn->networkDriver->networkIsPersistent(net);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+ error:
+    virDispatchError(net->conn);
+    return -1;
+}
+
+
+/**
+ * virConnectNetworkEventRegisterAny:
+ * @conn: pointer to the connection
+ * @net: pointer to the network
+ * @eventID: the event type to receive
+ * @cb: callback to the function handling network events
+ * @opaque: opaque data to pass on to the callback
+ * @freecb: optional function to deallocate opaque when not used anymore
+ *
+ * Adds a callback to receive notifications of arbitrary network events
+ * occurring on a network.  This function requires that an event loop
+ * has been previously registered with virEventRegisterImpl() or
+ * virEventRegisterDefaultImpl().
+ *
+ * If @net is NULL, then events will be monitored for any network. If @net
+ * is non-NULL, then only the specific network will be monitored.
+ *
+ * Most types of event have a callback providing a custom set of parameters
+ * for the event. When registering an event, it is thus necessary to use
+ * the VIR_NETWORK_EVENT_CALLBACK() macro to cast the supplied function pointer
+ * to match the signature of this method.
+ *
+ * The virNetworkPtr object handle passed into the callback upon delivery
+ * of an event is only valid for the duration of execution of the callback.
+ * If the callback wishes to keep the network object after the callback
+ * returns, it shall take a reference to it, by calling virNetworkRef().
+ * The reference can be released once the object is no longer required
+ * by calling virNetworkFree().
+ *
+ * The return value from this method is a positive integer identifier
+ * for the callback. To unregister a callback, this callback ID should
+ * be passed to the virConnectNetworkEventDeregisterAny() method.
+ *
+ * Returns a callback identifier on success, -1 on failure.
+ */
+int
+virConnectNetworkEventRegisterAny(virConnectPtr conn,
+                                  virNetworkPtr net,
+                                  int eventID,
+                                  virConnectNetworkEventGenericCallback cb,
+                                  void *opaque,
+                                  virFreeCallback freecb)
+{
+    VIR_DEBUG("conn=%p, eventID=%d, cb=%p, opaque=%p, freecb=%p",
+              conn, eventID, cb, opaque, freecb);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, -1);
+    if (net) {
+        virCheckNetworkGoto(net, error);
+        if (net->conn != conn) {
+            virReportInvalidArg(net,
+                                _("network '%s' in %s must match connection"),
+                                net->name, __FUNCTION__);
+            goto error;
+        }
+    }
+    virCheckNonNullArgGoto(cb, error);
+    virCheckNonNegativeArgGoto(eventID, error);
+
+    if (eventID >= VIR_NETWORK_EVENT_ID_LAST) {
+        virReportInvalidArg(eventID,
+                            _("eventID in %s must be less than %d"),
+                            __FUNCTION__, VIR_NETWORK_EVENT_ID_LAST);
+        goto error;
+    }
+
+    if (conn->networkDriver && conn->networkDriver->connectNetworkEventRegisterAny) {
+        int ret;
+        ret = conn->networkDriver->connectNetworkEventRegisterAny(conn, net,
+                                                                  eventID,
+                                                                  cb, opaque,
+                                                                  freecb);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+ error:
+    virDispatchError(conn);
+    return -1;
+}
+
+
+/**
+ * virConnectNetworkEventDeregisterAny:
+ * @conn: pointer to the connection
+ * @callbackID: the callback identifier
+ *
+ * Removes an event callback. The callbackID parameter should be the
+ * value obtained from a previous virConnectNetworkEventRegisterAny() method.
+ *
+ * Returns 0 on success, -1 on failure
+ */
+int
+virConnectNetworkEventDeregisterAny(virConnectPtr conn,
+                                    int callbackID)
+{
+    VIR_DEBUG("conn=%p, callbackID=%d", conn, callbackID);
+
+    virResetLastError();
+
+    virCheckConnectReturn(conn, -1);
+    virCheckNonNegativeArgGoto(callbackID, error);
+
+    if (conn->networkDriver &&
+        conn->networkDriver->connectNetworkEventDeregisterAny) {
+        int ret;
+        ret = conn->networkDriver->connectNetworkEventDeregisterAny(conn,
+                                                                    callbackID);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+ error:
+    virDispatchError(conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkGetDHCPLeases:
+ * @network: Pointer to network object
+ * @mac: Optional 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
+ *
+ * For DHCPv4, the information returned:
+ * - Network Interface Name
+ * - Expiry Time
+ * - MAC address
+ * - IAID (NULL)
+ * - IPv4 address (with type and prefix)
+ * - Hostname (can be NULL)
+ * - Client ID (can be NULL)
+ *
+ * For DHCPv6, the information returned:
+ * - Network Interface Name
+ * - Expiry Time
+ * - MAC address
+ * - IAID (can be NULL, only in rare cases)
+ * - IPv6 address (with type and prefix)
+ * - Hostname (can be NULL)
+ * - Client DUID
+ *
+ * Note: @mac, @iaid, @ipaddr, @clientid are in ASCII form, not raw bytes.
+ * Note: @expirytime can 0, in case the lease is for infinite time.
+ *
+ * The API 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 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 also virNetworkGetDHCPLeasesForMAC() as a convenience for filtering
+ * the list to a single MAC address.
+ *
+ * Example of usage:
+ *
+ * virNetworkDHCPLeasePtr *leases = NULL;
+ * virNetworkPtr network = ... obtain a network pointer here ...;
+ * size_t i;
+ * int nleases;
+ * unsigned int flags = 0;
+ *
+ * nleases = virNetworkGetDHCPLeases(network, NULL, &leases, flags);
+ * if (nleases < 0)
+ *     error();
+ *
+ * ... do something with returned values, for example:
+ *
+ * for (i = 0; i < nleases; i++) {
+ *     virNetworkDHCPLeasePtr lease = leases[i];
+ *
+ *     printf("Time(epoch): %lu, MAC address: %s, "
+ *            "IP address: %s, Hostname: %s, ClientID: %s\n",
+ *            lease->expirytime, lease->mac, lease->ipaddr,
+ *            lease->hostname, lease->clientid);
+ *
+ *            virNetworkDHCPLeaseFree(leases[i]);
+ * }
+ *
+ * free(leases);
+ *
+ */
+int
+virNetworkGetDHCPLeases(virNetworkPtr network,
+                        const char *mac,
+                        virNetworkDHCPLeasePtr **leases,
+                        unsigned int flags)
+{
+    virConnectPtr conn;
+    VIR_DEBUG("network=%p, mac='%s' leases=%p, flags=%x",
+               network, NULLSTR(mac), leases, flags);
+
+    virResetLastError();
+
+    if (leases)
+        *leases = NULL;
+
+    virCheckNetworkReturn(network, -1);
+
+    conn = network->conn;
+
+    if (conn->networkDriver && conn->networkDriver->networkGetDHCPLeases) {
+        int ret;
+        ret = conn->networkDriver->networkGetDHCPLeases(network, mac, leases, flags);
+        if (ret < 0)
+            goto error;
+        return ret;
+    }
+
+    virReportUnsupportedError();
+
+ error:
+    virDispatchError(network->conn);
+    return -1;
+}
+
+
+/**
+ * virNetworkDHCPLeaseFree:
+ * @lease: pointer to a leases object
+ *
+ * Frees all the memory occupied by @lease.
+ */
+void
+virNetworkDHCPLeaseFree(virNetworkDHCPLeasePtr lease)
+{
+    if (!lease)
+        return;
+    VIR_FREE(lease->iface);
+    VIR_FREE(lease->mac);
+    VIR_FREE(lease->iaid);
+    VIR_FREE(lease->ipaddr);
+    VIR_FREE(lease->hostname);
+    VIR_FREE(lease->clientid);
+    VIR_FREE(lease);
+}
diff --git a/src/libvirt.c b/src/libvirt.c
index f02f0d9..328dff4 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -10684,912 +10684,6 @@ virNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long long *freeMems,
 
 
 /**
- * virNetworkGetConnect:
- * @net: pointer to a network
- *
- * Provides the connection pointer associated with a network.  The
- * reference counter on the connection is not increased by this
- * call.
- *
- * WARNING: When writing libvirt bindings in other languages, do
- * not use this function.  Instead, store the connection and
- * the network object together.
- *
- * Returns the virConnectPtr or NULL in case of failure.
- */
-virConnectPtr
-virNetworkGetConnect(virNetworkPtr net)
-{
-    VIR_DEBUG("net=%p", net);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(net, NULL);
-
-    return net->conn;
-}
-
-
-/**
- * virConnectListAllNetworks:
- * @conn: Pointer to the hypervisor connection.
- * @nets: Pointer to a variable to store the array containing the network
- *        objects or NULL if the list is not required (just returns number
- *        of networks).
- * @flags: bitwise-OR of virConnectListAllNetworksFlags.
- *
- * Collect the list of networks, and allocate an array to store those
- * objects. This API solves the race inherent between virConnectListNetworks
- * and virConnectListDefinedNetworks.
- *
- * Normally, all networks are returned; however, @flags can be used to
- * filter the results for a smaller list of targeted networks.  The valid
- * flags are divided into groups, where each group contains bits that
- * describe mutually exclusive attributes of a network, and where all bits
- * within a group describe all possible networks.
- *
- * The first group of @flags is VIR_CONNECT_LIST_NETWORKS_ACTIVE (up) and
- * VIR_CONNECT_LIST_NETWORKS_INACTIVE (down) to filter the networks by state.
- *
- * The second group of @flags is VIR_CONNECT_LIST_NETWORKS_PERSISTENT (defined)
- * and VIR_CONNECT_LIST_NETWORKS_TRANSIENT (running but not defined), to filter
- * the networks by whether they have persistent config or not.
- *
- * The third group of @flags is VIR_CONNECT_LIST_NETWORKS_AUTOSTART
- * and VIR_CONNECT_LIST_NETWORKS_NO_AUTOSTART, to filter the networks by
- * whether they are marked as autostart or not.
- *
- * Returns the number of networks found or -1 and sets @nets to  NULL in case
- * of error.  On success, the array stored into @nets 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
- * virNetworkFree() on each array element, then calling free() on @nets.
- */
-int
-virConnectListAllNetworks(virConnectPtr conn,
-                          virNetworkPtr **nets,
-                          unsigned int flags)
-{
-    VIR_DEBUG("conn=%p, nets=%p, flags=%x", conn, nets, flags);
-
-    virResetLastError();
-
-    if (nets)
-        *nets = NULL;
-
-    virCheckConnectReturn(conn, -1);
-
-    if (conn->networkDriver &&
-        conn->networkDriver->connectListAllNetworks) {
-        int ret;
-        ret = conn->networkDriver->connectListAllNetworks(conn, nets, flags);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(conn);
-    return -1;
-}
-
-
-/**
- * virConnectNumOfNetworks:
- * @conn: pointer to the hypervisor connection
- *
- * Provides the number of active networks.
- *
- * Returns the number of network found or -1 in case of error
- */
-int
-virConnectNumOfNetworks(virConnectPtr conn)
-{
-    VIR_DEBUG("conn=%p", conn);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, -1);
-
-    if (conn->networkDriver && conn->networkDriver->connectNumOfNetworks) {
-        int ret;
-        ret = conn->networkDriver->connectNumOfNetworks(conn);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(conn);
-    return -1;
-}
-
-
-/**
- * virConnectListNetworks:
- * @conn: pointer to the hypervisor connection
- * @names: array to collect the list of names of active networks
- * @maxnames: size of @names
- *
- * Collect the list of active networks, and store their names in @names
- *
- * For more control over the results, see virConnectListAllNetworks().
- *
- * Returns the number of networks found or -1 in case of error.  Note that
- * this command is inherently racy; a network can be started between a call
- * to virConnectNumOfNetworks() and this call; you are only guaranteed that
- * all currently active networks were listed if the return is less than
- * @maxnames. The client must call free() on each returned name.
- */
-int
-virConnectListNetworks(virConnectPtr conn, char **const names, int maxnames)
-{
-    VIR_DEBUG("conn=%p, names=%p, maxnames=%d", conn, names, maxnames);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, -1);
-    virCheckNonNullArgGoto(names, error);
-    virCheckNonNegativeArgGoto(maxnames, error);
-
-    if (conn->networkDriver && conn->networkDriver->connectListNetworks) {
-        int ret;
-        ret = conn->networkDriver->connectListNetworks(conn, names, maxnames);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(conn);
-    return -1;
-}
-
-
-/**
- * virConnectNumOfDefinedNetworks:
- * @conn: pointer to the hypervisor connection
- *
- * Provides the number of inactive networks.
- *
- * Returns the number of networks found or -1 in case of error
- */
-int
-virConnectNumOfDefinedNetworks(virConnectPtr conn)
-{
-    VIR_DEBUG("conn=%p", conn);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, -1);
-
-    if (conn->networkDriver && conn->networkDriver->connectNumOfDefinedNetworks) {
-        int ret;
-        ret = conn->networkDriver->connectNumOfDefinedNetworks(conn);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(conn);
-    return -1;
-}
-
-
-/**
- * virConnectListDefinedNetworks:
- * @conn: pointer to the hypervisor connection
- * @names: pointer to an array to store the names
- * @maxnames: size of the array
- *
- * list the inactive networks, stores the pointers to the names in @names
- *
- * For more control over the results, see virConnectListAllNetworks().
- *
- * Returns the number of names provided in the array or -1 in case of error.
- * Note that this command is inherently racy; a network can be defined between
- * a call to virConnectNumOfDefinedNetworks() and this call; you are only
- * guaranteed that all currently defined networks were listed if the return
- * is less than @maxnames.  The client must call free() on each returned name.
- */
-int
-virConnectListDefinedNetworks(virConnectPtr conn, char **const names,
-                              int maxnames)
-{
-    VIR_DEBUG("conn=%p, names=%p, maxnames=%d", conn, names, maxnames);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, -1);
-    virCheckNonNullArgGoto(names, error);
-    virCheckNonNegativeArgGoto(maxnames, error);
-
-    if (conn->networkDriver && conn->networkDriver->connectListDefinedNetworks) {
-        int ret;
-        ret = conn->networkDriver->connectListDefinedNetworks(conn, names, maxnames);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(conn);
-    return -1;
-}
-
-
-/**
- * virNetworkLookupByName:
- * @conn: pointer to the hypervisor connection
- * @name: name for the network
- *
- * Try to lookup a network on the given hypervisor based on its name.
- *
- * virNetworkFree should be used to free the resources after the
- * network object is no longer needed.
- *
- * Returns a new network object or NULL in case of failure.  If the
- * network cannot be found, then VIR_ERR_NO_NETWORK error is raised.
- */
-virNetworkPtr
-virNetworkLookupByName(virConnectPtr conn, const char *name)
-{
-    VIR_DEBUG("conn=%p, name=%s", conn, name);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, NULL);
-    virCheckNonNullArgGoto(name, error);
-
-    if (conn->networkDriver && conn->networkDriver->networkLookupByName) {
-        virNetworkPtr ret;
-        ret = conn->networkDriver->networkLookupByName(conn, name);
-        if (!ret)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(conn);
-    return NULL;
-}
-
-
-/**
- * virNetworkLookupByUUID:
- * @conn: pointer to the hypervisor connection
- * @uuid: the raw UUID for the network
- *
- * Try to lookup a network on the given hypervisor based on its UUID.
- *
- * virNetworkFree should be used to free the resources after the
- * network object is no longer needed.
- *
- * Returns a new network object or NULL in case of failure.  If the
- * network cannot be found, then VIR_ERR_NO_NETWORK error is raised.
- */
-virNetworkPtr
-virNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
-{
-    VIR_UUID_DEBUG(conn, uuid);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, NULL);
-    virCheckNonNullArgGoto(uuid, error);
-
-    if (conn->networkDriver && conn->networkDriver->networkLookupByUUID) {
-        virNetworkPtr ret;
-        ret = conn->networkDriver->networkLookupByUUID(conn, uuid);
-        if (!ret)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(conn);
-    return NULL;
-}
-
-
-/**
- * virNetworkLookupByUUIDString:
- * @conn: pointer to the hypervisor connection
- * @uuidstr: the string UUID for the network
- *
- * Try to lookup a network on the given hypervisor based on its UUID.
- *
- * Returns a new network object or NULL in case of failure.  If the
- * network cannot be found, then VIR_ERR_NO_NETWORK error is raised.
- */
-virNetworkPtr
-virNetworkLookupByUUIDString(virConnectPtr conn, const char *uuidstr)
-{
-    unsigned char uuid[VIR_UUID_BUFLEN];
-    VIR_DEBUG("conn=%p, uuidstr=%s", conn, NULLSTR(uuidstr));
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, NULL);
-    virCheckNonNullArgGoto(uuidstr, error);
-
-    if (virUUIDParse(uuidstr, uuid) < 0) {
-        virReportInvalidArg(uuidstr,
-                            _("uuidstr in %s must be a valid UUID"),
-                            __FUNCTION__);
-        goto error;
-    }
-
-    return virNetworkLookupByUUID(conn, &uuid[0]);
-
- error:
-    virDispatchError(conn);
-    return NULL;
-}
-
-
-/**
- * virNetworkCreateXML:
- * @conn: pointer to the hypervisor connection
- * @xmlDesc: an XML description of the network
- *
- * Create and start a new virtual network, based on an XML description
- * similar to the one returned by virNetworkGetXMLDesc()
- *
- * virNetworkFree should be used to free the resources after the
- * network object is no longer needed.
- *
- * Returns a new network object or NULL in case of failure
- */
-virNetworkPtr
-virNetworkCreateXML(virConnectPtr conn, const char *xmlDesc)
-{
-    VIR_DEBUG("conn=%p, xmlDesc=%s", conn, xmlDesc);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, NULL);
-    virCheckNonNullArgGoto(xmlDesc, error);
-    virCheckReadOnlyGoto(conn->flags, error);
-
-    if (conn->networkDriver && conn->networkDriver->networkCreateXML) {
-        virNetworkPtr ret;
-        ret = conn->networkDriver->networkCreateXML(conn, xmlDesc);
-        if (!ret)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(conn);
-    return NULL;
-}
-
-
-/**
- * virNetworkDefineXML:
- * @conn: pointer to the hypervisor connection
- * @xml: the XML description for the network, preferably in UTF-8
- *
- * Define a network, but does not create it
- *
- * virNetworkFree should be used to free the resources after the
- * network object is no longer needed.
- *
- * Returns NULL in case of error, a pointer to the network otherwise
- */
-virNetworkPtr
-virNetworkDefineXML(virConnectPtr conn, const char *xml)
-{
-    VIR_DEBUG("conn=%p, xml=%s", conn, xml);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, NULL);
-    virCheckReadOnlyGoto(conn->flags, error);
-    virCheckNonNullArgGoto(xml, error);
-
-    if (conn->networkDriver && conn->networkDriver->networkDefineXML) {
-        virNetworkPtr ret;
-        ret = conn->networkDriver->networkDefineXML(conn, xml);
-        if (!ret)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(conn);
-    return NULL;
-}
-
-
-/**
- * virNetworkUndefine:
- * @network: pointer to a defined network
- *
- * Undefine a network but does not stop it if it is running
- *
- * Returns 0 in case of success, -1 in case of error
- */
-int
-virNetworkUndefine(virNetworkPtr network)
-{
-    virConnectPtr conn;
-    VIR_DEBUG("network=%p", network);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-    conn = network->conn;
-
-    virCheckReadOnlyGoto(conn->flags, error);
-
-    if (conn->networkDriver && conn->networkDriver->networkUndefine) {
-        int ret;
-        ret = conn->networkDriver->networkUndefine(network);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(network->conn);
-    return -1;
-}
-
-
-/**
- * virNetworkUpdate:
- * @network: pointer to a defined network
- * @section: which section of the network to update
- *           (see virNetworkUpdateSection for descriptions)
- * @command: what action to perform (add/delete/modify)
- *           (see virNetworkUpdateCommand for descriptions)
- * @parentIndex: which parent element, if there are multiple parents
- *           of the same type (e.g. which <ip> element when modifying
- *           a <dhcp>/<host> element), or "-1" for "don't care" or
- *           "automatically find appropriate one".
- * @xml: the XML description for the network, preferably in UTF-8
- * @flags: bitwise OR of virNetworkUpdateFlags.
- *
- * Update the definition of an existing network, either its live
- * running state, its persistent configuration, or both.
- *
- * Returns 0 in case of success, -1 in case of error
- */
-int
-virNetworkUpdate(virNetworkPtr network,
-                 unsigned int command, /* virNetworkUpdateCommand */
-                 unsigned int section, /* virNetworkUpdateSection */
-                 int parentIndex,
-                 const char *xml,
-                 unsigned int flags)
-{
-    virConnectPtr conn;
-    VIR_DEBUG("network=%p, section=%d, parentIndex=%d, xml=%s, flags=0x%x",
-              network, section, parentIndex, xml, flags);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-    conn = network->conn;
-
-    virCheckReadOnlyGoto(conn->flags, error);
-    virCheckNonNullArgGoto(xml, error);
-
-    if (conn->networkDriver && conn->networkDriver->networkUpdate) {
-        int ret;
-        ret = conn->networkDriver->networkUpdate(network, section, command,
-                                                 parentIndex, xml, flags);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(network->conn);
-    return -1;
-}
-
-
-/**
- * virNetworkCreate:
- * @network: pointer to a defined network
- *
- * Create and start a defined network. If the call succeed the network
- * moves from the defined to the running networks pools.
- *
- * Returns 0 in case of success, -1 in case of error
- */
-int
-virNetworkCreate(virNetworkPtr network)
-{
-    virConnectPtr conn;
-    VIR_DEBUG("network=%p", network);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-    conn = network->conn;
-
-    virCheckReadOnlyGoto(conn->flags, error);
-
-    if (conn->networkDriver && conn->networkDriver->networkCreate) {
-        int ret;
-        ret = conn->networkDriver->networkCreate(network);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(network->conn);
-    return -1;
-}
-
-
-/**
- * virNetworkDestroy:
- * @network: a network object
- *
- * Destroy the network object. The running instance is shutdown if not down
- * already and all resources used by it are given back to the hypervisor. This
- * does not free the associated virNetworkPtr object.
- * This function may require privileged access
- *
- * Returns 0 in case of success and -1 in case of failure.
- */
-int
-virNetworkDestroy(virNetworkPtr network)
-{
-    virConnectPtr conn;
-    VIR_DEBUG("network=%p", network);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-    conn = network->conn;
-
-    virCheckReadOnlyGoto(conn->flags, error);
-
-    if (conn->networkDriver && conn->networkDriver->networkDestroy) {
-        int ret;
-        ret = conn->networkDriver->networkDestroy(network);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(network->conn);
-    return -1;
-}
-
-
-/**
- * virNetworkFree:
- * @network: a network object
- *
- * Free the network object. The running instance is kept alive.
- * The data structure is freed and should not be used thereafter.
- *
- * Returns 0 in case of success and -1 in case of failure.
- */
-int
-virNetworkFree(virNetworkPtr network)
-{
-    VIR_DEBUG("network=%p", network);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-
-    virObjectUnref(network);
-    return 0;
-}
-
-
-/**
- * virNetworkRef:
- * @network: the network to hold a reference on
- *
- * Increment the reference count on the network. For each
- * additional call to this method, there shall be a corresponding
- * call to virNetworkFree to release the reference count, once
- * the caller no longer needs the reference to this object.
- *
- * This method is typically useful for applications where multiple
- * threads are using a connection, and it is required that the
- * connection remain open until all threads have finished using
- * it. ie, each new thread using a network would increment
- * the reference count.
- *
- * Returns 0 in case of success, -1 in case of failure.
- */
-int
-virNetworkRef(virNetworkPtr network)
-{
-    VIR_DEBUG("network=%p refs=%d", network,
-              network ? network->object.u.s.refs : 0);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-
-    virObjectRef(network);
-    return 0;
-}
-
-
-/**
- * virNetworkGetName:
- * @network: a network object
- *
- * Get the public name for that network
- *
- * Returns a pointer to the name or NULL, the string need not be deallocated
- * its lifetime will be the same as the network object.
- */
-const char *
-virNetworkGetName(virNetworkPtr network)
-{
-    VIR_DEBUG("network=%p", network);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, NULL);
-
-    return network->name;
-}
-
-
-/**
- * virNetworkGetUUID:
- * @network: a network object
- * @uuid: pointer to a VIR_UUID_BUFLEN bytes array
- *
- * Get the UUID for a network
- *
- * Returns -1 in case of error, 0 in case of success
- */
-int
-virNetworkGetUUID(virNetworkPtr network, unsigned char *uuid)
-{
-    VIR_DEBUG("network=%p, uuid=%p", network, uuid);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-    virCheckNonNullArgGoto(uuid, error);
-
-    memcpy(uuid, &network->uuid[0], VIR_UUID_BUFLEN);
-
-    return 0;
-
- error:
-    virDispatchError(network->conn);
-    return -1;
-}
-
-
-/**
- * virNetworkGetUUIDString:
- * @network: a network object
- * @buf: pointer to a VIR_UUID_STRING_BUFLEN bytes array
- *
- * Get the UUID for a network as string. For more information about
- * UUID see RFC4122.
- *
- * Returns -1 in case of error, 0 in case of success
- */
-int
-virNetworkGetUUIDString(virNetworkPtr network, char *buf)
-{
-    VIR_DEBUG("network=%p, buf=%p", network, buf);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-    virCheckNonNullArgGoto(buf, error);
-
-    virUUIDFormat(network->uuid, buf);
-    return 0;
-
- error:
-    virDispatchError(network->conn);
-    return -1;
-}
-
-
-/**
- * virNetworkGetXMLDesc:
- * @network: a network object
- * @flags: bitwise-OR of virNetworkXMLFlags
- *
- * Provide an XML description of the network. The description may be reused
- * later to relaunch the network with virNetworkCreateXML().
- *
- * Normally, if a network included a physical function, the output includes
- * all virtual functions tied to that physical interface.  If @flags includes
- * VIR_NETWORK_XML_INACTIVE, then the expansion of virtual interfaces is
- * not performed.
- *
- * Returns a 0 terminated UTF-8 encoded XML instance, or NULL in case of error.
- *         the caller must free() the returned value.
- */
-char *
-virNetworkGetXMLDesc(virNetworkPtr network, unsigned int flags)
-{
-    virConnectPtr conn;
-    VIR_DEBUG("network=%p, flags=%x", network, flags);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, NULL);
-    conn = network->conn;
-
-    if (conn->networkDriver && conn->networkDriver->networkGetXMLDesc) {
-        char *ret;
-        ret = conn->networkDriver->networkGetXMLDesc(network, flags);
-        if (!ret)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(network->conn);
-    return NULL;
-}
-
-
-/**
- * virNetworkGetBridgeName:
- * @network: a network object
- *
- * Provides a bridge interface name to which a domain may connect
- * a network interface in order to join the network.
- *
- * Returns a 0 terminated interface name, or NULL in case of error.
- *         the caller must free() the returned value.
- */
-char *
-virNetworkGetBridgeName(virNetworkPtr network)
-{
-    virConnectPtr conn;
-    VIR_DEBUG("network=%p", network);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, NULL);
-    conn = network->conn;
-
-    if (conn->networkDriver && conn->networkDriver->networkGetBridgeName) {
-        char *ret;
-        ret = conn->networkDriver->networkGetBridgeName(network);
-        if (!ret)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(network->conn);
-    return NULL;
-}
-
-
-/**
- * virNetworkGetAutostart:
- * @network: a network object
- * @autostart: the value returned
- *
- * Provides a boolean value indicating whether the network
- * configured to be automatically started when the host
- * machine boots.
- *
- * Returns -1 in case of error, 0 in case of success
- */
-int
-virNetworkGetAutostart(virNetworkPtr network,
-                       int *autostart)
-{
-    virConnectPtr conn;
-    VIR_DEBUG("network=%p, autostart=%p", network, autostart);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-    virCheckNonNullArgGoto(autostart, error);
-
-    conn = network->conn;
-
-    if (conn->networkDriver && conn->networkDriver->networkGetAutostart) {
-        int ret;
-        ret = conn->networkDriver->networkGetAutostart(network, autostart);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(network->conn);
-    return -1;
-}
-
-
-/**
- * virNetworkSetAutostart:
- * @network: a network object
- * @autostart: whether the network should be automatically started 0 or 1
- *
- * Configure the network to be automatically started
- * when the host machine boots.
- *
- * Returns -1 in case of error, 0 in case of success
- */
-int
-virNetworkSetAutostart(virNetworkPtr network,
-                       int autostart)
-{
-    virConnectPtr conn;
-    VIR_DEBUG("network=%p, autostart=%d", network, autostart);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(network, -1);
-    conn = network->conn;
-
-    virCheckReadOnlyGoto(conn->flags, error);
-
-    if (conn->networkDriver && conn->networkDriver->networkSetAutostart) {
-        int ret;
-        ret = conn->networkDriver->networkSetAutostart(network, autostart);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(network->conn);
-    return -1;
-}
-
-
-/**
  * virInterfaceGetConnect:
  * @iface: pointer to an interface
  *
@@ -16659,71 +15753,6 @@ virDomainIsUpdated(virDomainPtr dom)
 
 
 /**
- * virNetworkIsActive:
- * @net: pointer to the network object
- *
- * Determine if the network is currently running
- *
- * Returns 1 if running, 0 if inactive, -1 on error
- */
-int
-virNetworkIsActive(virNetworkPtr net)
-{
-    VIR_DEBUG("net=%p", net);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(net, -1);
-
-    if (net->conn->networkDriver->networkIsActive) {
-        int ret;
-        ret = net->conn->networkDriver->networkIsActive(net);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
- error:
-    virDispatchError(net->conn);
-    return -1;
-}
-
-
-/**
- * virNetworkIsPersistent:
- * @net: pointer to the network object
- *
- * Determine if the network has a persistent configuration
- * which means it will still exist after shutting down
- *
- * Returns 1 if persistent, 0 if transient, -1 on error
- */
-int
-virNetworkIsPersistent(virNetworkPtr net)
-{
-    VIR_DEBUG("net=%p", net);
-
-    virResetLastError();
-
-    virCheckNetworkReturn(net, -1);
-
-    if (net->conn->networkDriver->networkIsPersistent) {
-        int ret;
-        ret = net->conn->networkDriver->networkIsPersistent(net);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
- error:
-    virDispatchError(net->conn);
-    return -1;
-}
-
-
-/**
  * virStoragePoolIsActive:
  * @pool: pointer to the storage pool object
  *
@@ -17997,130 +17026,6 @@ virConnectDomainEventDeregisterAny(virConnectPtr conn,
 
 
 /**
- * virConnectNetworkEventRegisterAny:
- * @conn: pointer to the connection
- * @net: pointer to the network
- * @eventID: the event type to receive
- * @cb: callback to the function handling network events
- * @opaque: opaque data to pass on to the callback
- * @freecb: optional function to deallocate opaque when not used anymore
- *
- * Adds a callback to receive notifications of arbitrary network events
- * occurring on a network.  This function requires that an event loop
- * has been previously registered with virEventRegisterImpl() or
- * virEventRegisterDefaultImpl().
- *
- * If @net is NULL, then events will be monitored for any network. If @net
- * is non-NULL, then only the specific network will be monitored.
- *
- * Most types of event have a callback providing a custom set of parameters
- * for the event. When registering an event, it is thus necessary to use
- * the VIR_NETWORK_EVENT_CALLBACK() macro to cast the supplied function pointer
- * to match the signature of this method.
- *
- * The virNetworkPtr object handle passed into the callback upon delivery
- * of an event is only valid for the duration of execution of the callback.
- * If the callback wishes to keep the network object after the callback
- * returns, it shall take a reference to it, by calling virNetworkRef().
- * The reference can be released once the object is no longer required
- * by calling virNetworkFree().
- *
- * The return value from this method is a positive integer identifier
- * for the callback. To unregister a callback, this callback ID should
- * be passed to the virConnectNetworkEventDeregisterAny() method.
- *
- * Returns a callback identifier on success, -1 on failure.
- */
-int
-virConnectNetworkEventRegisterAny(virConnectPtr conn,
-                                  virNetworkPtr net,
-                                  int eventID,
-                                  virConnectNetworkEventGenericCallback cb,
-                                  void *opaque,
-                                  virFreeCallback freecb)
-{
-    VIR_DEBUG("conn=%p, eventID=%d, cb=%p, opaque=%p, freecb=%p",
-              conn, eventID, cb, opaque, freecb);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, -1);
-    if (net) {
-        virCheckNetworkGoto(net, error);
-        if (net->conn != conn) {
-            virReportInvalidArg(net,
-                                _("network '%s' in %s must match connection"),
-                                net->name, __FUNCTION__);
-            goto error;
-        }
-    }
-    virCheckNonNullArgGoto(cb, error);
-    virCheckNonNegativeArgGoto(eventID, error);
-
-    if (eventID >= VIR_NETWORK_EVENT_ID_LAST) {
-        virReportInvalidArg(eventID,
-                            _("eventID in %s must be less than %d"),
-                            __FUNCTION__, VIR_NETWORK_EVENT_ID_LAST);
-        goto error;
-    }
-
-    if (conn->networkDriver && conn->networkDriver->connectNetworkEventRegisterAny) {
-        int ret;
-        ret = conn->networkDriver->connectNetworkEventRegisterAny(conn, net,
-                                                                  eventID,
-                                                                  cb, opaque,
-                                                                  freecb);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
- error:
-    virDispatchError(conn);
-    return -1;
-}
-
-
-/**
- * virConnectNetworkEventDeregisterAny:
- * @conn: pointer to the connection
- * @callbackID: the callback identifier
- *
- * Removes an event callback. The callbackID parameter should be the
- * value obtained from a previous virConnectNetworkEventRegisterAny() method.
- *
- * Returns 0 on success, -1 on failure
- */
-int
-virConnectNetworkEventDeregisterAny(virConnectPtr conn,
-                                    int callbackID)
-{
-    VIR_DEBUG("conn=%p, callbackID=%d", conn, callbackID);
-
-    virResetLastError();
-
-    virCheckConnectReturn(conn, -1);
-    virCheckNonNegativeArgGoto(callbackID, error);
-
-    if (conn->networkDriver &&
-        conn->networkDriver->connectNetworkEventDeregisterAny) {
-        int ret;
-        ret = conn->networkDriver->connectNetworkEventDeregisterAny(conn,
-                                                                    callbackID);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
- error:
-    virDispatchError(conn);
-    return -1;
-}
-
-
-/**
  * virDomainManagedSave:
  * @dom: pointer to the domain
  * @flags: bitwise-OR of virDomainSaveRestoreFlags
@@ -20199,132 +19104,6 @@ virNodeGetFreePages(virConnectPtr conn,
     return -1;
 }
 
-/**
- * virNetworkGetDHCPLeases:
- * @network: Pointer to network object
- * @mac: Optional 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
- *
- * For DHCPv4, the information returned:
- * - Network Interface Name
- * - Expiry Time
- * - MAC address
- * - IAID (NULL)
- * - IPv4 address (with type and prefix)
- * - Hostname (can be NULL)
- * - Client ID (can be NULL)
- *
- * For DHCPv6, the information returned:
- * - Network Interface Name
- * - Expiry Time
- * - MAC address
- * - IAID (can be NULL, only in rare cases)
- * - IPv6 address (with type and prefix)
- * - Hostname (can be NULL)
- * - Client DUID
- *
- * Note: @mac, @iaid, @ipaddr, @clientid are in ASCII form, not raw bytes.
- * Note: @expirytime can 0, in case the lease is for infinite time.
- *
- * The API 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 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 also virNetworkGetDHCPLeasesForMAC() as a convenience for filtering
- * the list to a single MAC address.
- *
- * Example of usage:
- *
- * virNetworkDHCPLeasePtr *leases = NULL;
- * virNetworkPtr network = ... obtain a network pointer here ...;
- * size_t i;
- * int nleases;
- * unsigned int flags = 0;
- *
- * nleases = virNetworkGetDHCPLeases(network, NULL, &leases, flags);
- * if (nleases < 0)
- *     error();
- *
- * ... do something with returned values, for example:
- *
- * for (i = 0; i < nleases; i++) {
- *     virNetworkDHCPLeasePtr lease = leases[i];
- *
- *     printf("Time(epoch): %lu, MAC address: %s, "
- *            "IP address: %s, Hostname: %s, ClientID: %s\n",
- *            lease->expirytime, lease->mac, lease->ipaddr,
- *            lease->hostname, lease->clientid);
- *
- *            virNetworkDHCPLeaseFree(leases[i]);
- * }
- *
- * free(leases);
- *
- */
-int
-virNetworkGetDHCPLeases(virNetworkPtr network,
-                        const char *mac,
-                        virNetworkDHCPLeasePtr **leases,
-                        unsigned int flags)
-{
-    virConnectPtr conn;
-    VIR_DEBUG("network=%p, mac='%s' leases=%p, flags=%x",
-               network, NULLSTR(mac), leases, flags);
-
-    virResetLastError();
-
-    if (leases)
-        *leases = NULL;
-
-    virCheckNetworkReturn(network, -1);
-
-    conn = network->conn;
-
-    if (conn->networkDriver && conn->networkDriver->networkGetDHCPLeases) {
-        int ret;
-        ret = conn->networkDriver->networkGetDHCPLeases(network, mac, leases, flags);
-        if (ret < 0)
-            goto error;
-        return ret;
-    }
-
-    virReportUnsupportedError();
-
- error:
-    virDispatchError(network->conn);
-    return -1;
-}
-
-
-/**
- * virNetworkDHCPLeaseFree:
- * @lease: pointer to a leases object
- *
- * Frees all the memory occupied by @lease.
- */
-void
-virNetworkDHCPLeaseFree(virNetworkDHCPLeasePtr lease)
-{
-    if (!lease)
-        return;
-    VIR_FREE(lease->iface);
-    VIR_FREE(lease->mac);
-    VIR_FREE(lease->iaid);
-    VIR_FREE(lease->ipaddr);
-    VIR_FREE(lease->hostname);
-    VIR_FREE(lease->clientid);
-    VIR_FREE(lease);
-}
 
 /**
  * virConnectGetDomainCapabilities:
-- 
2.1.0




More information about the libvir-list mailing list