]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
network_conf: Introduce virNetworkObjListPrune
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 4 Mar 2015 16:38:39 +0000 (17:38 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 9 Mar 2015 13:03:30 +0000 (14:03 +0100)
The API will iterate over the list of network object and remove
desired ones from it.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/network_conf.c
src/conf/network_conf.h
src/libvirt_private.syms

index dea180a7127b4589ab5e6c4a6913654578fd283a..ea9a9d46da73bc1fa831884f367f18bf5c45154b 100644 (file)
@@ -4381,3 +4381,34 @@ virNetworkObjListNumOfNetworks(virNetworkObjListPtr nets,
 
     return count;
 }
+
+/**
+ * virNetworkObjListPrune:
+ * @nets: a list of network objects
+ * @flags: bitwise-OR of virConnectListAllNetworksFlags
+ *
+ * Iterate over list of network objects and remove the desired
+ * ones from it.
+ */
+void
+virNetworkObjListPrune(virNetworkObjListPtr nets,
+                       unsigned int flags)
+{
+    size_t i = 0;
+
+    while (i < nets->count) {
+        virNetworkObjPtr obj = nets->objs[i];
+
+        virNetworkObjLock(obj);
+
+        if (virNetworkMatch(obj, flags)) {
+            virNetworkObjUnlock(obj);
+            virNetworkObjFree(obj);
+
+            VIR_DELETE_ELEMENT(nets->objs, i, nets->count);
+        } else {
+            virNetworkObjUnlock(obj);
+            i++;
+        }
+    }
+}
index bd9e3b44d6e05367f2487f71bbaf8ee8da3567df..3fbd609397b1a201ba26ddf0c7e59755f2dbd9ee 100644 (file)
@@ -464,6 +464,9 @@ int virNetworkObjListNumOfNetworks(virNetworkObjListPtr nets,
                                    virNetworkObjListFilter filter,
                                    virConnectPtr conn);
 
+void virNetworkObjListPrune(virNetworkObjListPtr nets,
+                            unsigned int flags);
+
 /* for testing */
 int
 virNetworkDefUpdateSection(virNetworkDefPtr def,
index 626b515fa2e84b1cb41f56ca651848cf58703a25..47c4d1d35892cc6dd7b97420110bb731c05e9c4a 100644 (file)
@@ -573,6 +573,7 @@ virNetworkObjListForEach;
 virNetworkObjListFree;
 virNetworkObjListGetNames;
 virNetworkObjListNumOfNetworks;
+virNetworkObjListPrune;
 virNetworkObjLock;
 virNetworkObjReplacePersistentDef;
 virNetworkObjSetDefTransient;