This API will be used in the future to call passed callback over
each network object in the list. It's slightly different to its
virDomainObjListForEach counterpart, because virDomainObjList
uses a hash table to store domain object, while virNetworkObjList
uses an array.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/conf/network_conf.c | 27 +++++++++++++++++++++++++++
src/conf/network_conf.h | 6 ++++++
src/libvirt_private.syms | 1 +
3 files changed, 34 insertions(+)
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index d0e7e1b..cb54e56 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -4290,3 +4290,30 @@ virNetworkObjListExport(virConnectPtr conn,
VIR_FREE(tmp_nets);
return ret;
}
+
+/**
+ * virNetworkObjListForEach:
+ * @nets: a list of network objects
+ * @callback: function to call over each of object in the list
+ * @opaque: pointer to pass to the @callback
+ *
+ * Function iterates over the list of network objects and calls
+ * passed callback over each one of them.
+ *
+ * Returns: 0 on success, -1 otherwise.
+ */
+int
+virNetworkObjListForEach(virNetworkObjListPtr nets,
+ virNetworkObjListIterator callback,
+ void *opaque)
+{
+ int ret = 0;
+ size_t i = 0;
+
+ for (i = 0; i < nets->count; i++) {
+ if (callback(nets->objs[i], opaque) < 0)
+ ret = -1;
+ }
+
+ return ret;
+}
diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h
index 16aea99..749c7fb 100644
--- a/src/conf/network_conf.h
+++ b/src/conf/network_conf.h
@@ -445,6 +445,12 @@ int virNetworkObjListExport(virConnectPtr conn,
virNetworkObjListFilter filter,
unsigned int flags);
+typedef int (*virNetworkObjListIterator)(virNetworkObjPtr net,
+ void *opaque);
+
+int virNetworkObjListForEach(virNetworkObjListPtr nets,
+ virNetworkObjListIterator callback,
+ void *opaque);
/* for testing */
int
virNetworkDefUpdateSection(virNetworkDefPtr def,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 13e0931..a7285d8 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -569,6 +569,7 @@ virNetworkObjFree;
virNetworkObjGetPersistentDef;
virNetworkObjIsDuplicate;
virNetworkObjListExport;
+virNetworkObjListForEach;
virNetworkObjListFree;
virNetworkObjLock;
virNetworkObjReplacePersistentDef;
--
2.0.5