]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
nwfilter: Introduce virNWFilterObjNumOfNWFilters
authorJohn Ferlan <jferlan@redhat.com>
Sun, 19 Mar 2017 12:20:25 +0000 (08:20 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 13 Apr 2017 14:36:19 +0000 (10:36 -0400)
Mostly code motion from nwfilter_driver to virnwfilterobj with one caveat
to add the virNWFilterObjListFilter typedef and pass it as an 'aclfilter'
argument to allow for future possible test driver adjustments to count
the number of filters (similar to how node device has done this).

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/conf/virnwfilterobj.c
src/conf/virnwfilterobj.h
src/libvirt_private.syms
src/nwfilter/nwfilter_driver.c

index 7e13afb030daedae18d2b175131eb0af6da4e754..5f5da5a0255a3bc2c4b93e631bc8926bf8b3e127 100644 (file)
@@ -305,6 +305,26 @@ virNWFilterObjAssignDef(virNWFilterObjListPtr nwfilters,
 }
 
 
+int
+virNWFilterObjNumOfNWFilters(virNWFilterObjListPtr nwfilters,
+                             virConnectPtr conn,
+                             virNWFilterObjListFilter aclfilter)
+{
+    size_t i;
+    int nfilters = 0;
+
+    for (i = 0; i < nwfilters->count; i++) {
+        virNWFilterObjPtr obj = nwfilters->objs[i];
+        virNWFilterObjLock(obj);
+        if (!aclfilter || aclfilter(conn, obj->def))
+            nfilters++;
+        virNWFilterObjUnlock(obj);
+    }
+
+    return nfilters;
+}
+
+
 static virNWFilterObjPtr
 virNWFilterObjLoadConfig(virNWFilterObjListPtr nwfilters,
                          const char *configDir,
index 1d80455fcc8528485270a6640cbe39b4076a6a9f..a8ecc35d6a11593fd809d2f333f84c4f99189547 100644 (file)
@@ -81,6 +81,15 @@ virNWFilterObjAssignDef(virNWFilterObjListPtr nwfilters,
 int
 virNWFilterObjTestUnassignDef(virNWFilterObjPtr nwfilter);
 
+typedef bool
+(*virNWFilterObjListFilter)(virConnectPtr conn,
+                            virNWFilterDefPtr def);
+
+int
+virNWFilterObjNumOfNWFilters(virNWFilterObjListPtr nwfilters,
+                             virConnectPtr conn,
+                             virNWFilterObjListFilter aclfilter);
+
 int
 virNWFilterObjLoadAllConfigs(virNWFilterObjListPtr nwfilters,
                              const char *configDir);
index 8509f639e474e50415d6c4e7718a2467d845cdbd..bc5605381f5ed0caa1f164361c1ea866241e9c54 100644 (file)
@@ -965,6 +965,7 @@ virNWFilterObjFindByUUID;
 virNWFilterObjListFree;
 virNWFilterObjLoadAllConfigs;
 virNWFilterObjLock;
+virNWFilterObjNumOfNWFilters;
 virNWFilterObjRemove;
 virNWFilterObjTestUnassignDef;
 virNWFilterObjUnlock;
index 4ea216a59c97849822a63e1e258eaa1c6f616a74..70bdea2e16af287657cff2206333a501c382ace2 100644 (file)
@@ -414,22 +414,11 @@ nwfilterLookupByName(virConnectPtr conn,
 static int
 nwfilterConnectNumOfNWFilters(virConnectPtr conn)
 {
-    size_t i;
-    int n;
-
     if (virConnectNumOfNWFiltersEnsureACL(conn) < 0)
         return -1;
 
-    n = 0;
-    for (i = 0; i < driver->nwfilters.count; i++) {
-        virNWFilterObjPtr obj = driver->nwfilters.objs[i];
-        virNWFilterObjLock(obj);
-        if (virConnectNumOfNWFiltersCheckACL(conn, obj->def))
-            n++;
-        virNWFilterObjUnlock(obj);
-    }
-
-    return n;
+    return virNWFilterObjNumOfNWFilters(&driver->nwfilters, conn,
+                                        virConnectNumOfNWFiltersCheckACL);
 }