]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
nwfilter: Introduce virNWFilterObjGetNames
authorJohn Ferlan <jferlan@redhat.com>
Sun, 19 Mar 2017 20:24:59 +0000 (16:24 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 13 Apr 2017 14:36:19 +0000 (10:36 -0400)
Mostly code motion to move nwfilterConnectListNWFilters into nwfilterobj.c
and rename to virNWFilterObjGetNames.

Also includes a couple of variable name adjustments to keep code consistent
with other drivers.

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 5f5da5a0255a3bc2c4b93e631bc8926bf8b3e127..ce19e6046164eaceaee22b5ce3e56441aaaee559 100644 (file)
@@ -325,6 +325,39 @@ virNWFilterObjNumOfNWFilters(virNWFilterObjListPtr nwfilters,
 }
 
 
+int
+virNWFilterObjGetNames(virNWFilterObjListPtr nwfilters,
+                       virConnectPtr conn,
+                       virNWFilterObjListFilter aclfilter,
+                       char **const names,
+                       int maxnames)
+{
+    int nnames = 0;
+    size_t i;
+
+    for (i = 0; i < nwfilters->count && nnames < maxnames; i++) {
+        virNWFilterObjPtr obj = nwfilters->objs[i];
+        virNWFilterObjLock(obj);
+        if (!aclfilter || aclfilter(conn, obj->def)) {
+            if (VIR_STRDUP(names[nnames], obj->def->name) < 0) {
+                virNWFilterObjUnlock(obj);
+                goto failure;
+            }
+            nnames++;
+        }
+        virNWFilterObjUnlock(obj);
+    }
+
+    return nnames;
+
+ failure:
+    while (--nnames >= 0)
+        VIR_FREE(names[nnames]);
+
+    return -1;
+}
+
+
 static virNWFilterObjPtr
 virNWFilterObjLoadConfig(virNWFilterObjListPtr nwfilters,
                          const char *configDir,
index a8ecc35d6a11593fd809d2f333f84c4f99189547..cd1600c8c08e3c202ae5c48f078ef20436c0f6ab 100644 (file)
@@ -90,6 +90,13 @@ virNWFilterObjNumOfNWFilters(virNWFilterObjListPtr nwfilters,
                              virConnectPtr conn,
                              virNWFilterObjListFilter aclfilter);
 
+int
+virNWFilterObjGetNames(virNWFilterObjListPtr nwfilters,
+                       virConnectPtr conn,
+                       virNWFilterObjListFilter aclfilter,
+                       char **const names,
+                       int maxnames);
+
 int
 virNWFilterObjLoadAllConfigs(virNWFilterObjListPtr nwfilters,
                              const char *configDir);
index bc5605381f5ed0caa1f164361c1ea866241e9c54..e386d1bd3092c99b6b620187af74648277d9e2c7 100644 (file)
@@ -962,6 +962,7 @@ virNodeDeviceObjUnlock;
 virNWFilterObjAssignDef;
 virNWFilterObjFindByName;
 virNWFilterObjFindByUUID;
+virNWFilterObjGetNames;
 virNWFilterObjListFree;
 virNWFilterObjLoadAllConfigs;
 virNWFilterObjLock;
index 70bdea2e16af287657cff2206333a501c382ace2..0d164a214584996d217284cdc6f1aaba701b5359 100644 (file)
@@ -425,36 +425,19 @@ nwfilterConnectNumOfNWFilters(virConnectPtr conn)
 static int
 nwfilterConnectListNWFilters(virConnectPtr conn,
                              char **const names,
-                             int nnames)
+                             int maxnames)
 {
-    int got = 0;
-    size_t i;
+    int nnames;
 
     if (virConnectListNWFiltersEnsureACL(conn) < 0)
         return -1;
 
     nwfilterDriverLock();
-    for (i = 0; i < driver->nwfilters.count && got < nnames; i++) {
-        virNWFilterObjPtr obj = driver->nwfilters.objs[i];
-        virNWFilterObjLock(obj);
-        if (virConnectListNWFiltersCheckACL(conn, obj->def)) {
-            if (VIR_STRDUP(names[got], obj->def->name) < 0) {
-                virNWFilterObjUnlock(obj);
-                goto cleanup;
-            }
-            got++;
-        }
-        virNWFilterObjUnlock(obj);
-    }
-    nwfilterDriverUnlock();
-    return got;
-
- cleanup:
+    nnames = virNWFilterObjGetNames(&driver->nwfilters, conn,
+                                    virConnectListNWFiltersCheckACL,
+                                    names, maxnames);
     nwfilterDriverUnlock();
-    for (i = 0; i < got; i++)
-        VIR_FREE(names[i]);
-    memset(names, 0, nnames * sizeof(*names));
-    return -1;
+    return nnames;
 }