]> xenbits.xensource.com Git - libvirt.git/commitdiff
interface: Introduce virInterfaceObjNumOfInterfaces
authorJohn Ferlan <jferlan@redhat.com>
Thu, 6 Apr 2017 13:23:17 +0000 (09:23 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Mon, 10 Apr 2017 11:30:00 +0000 (07:30 -0400)
Unlike other drivers, this is a test driver only API. Still combining
the logic of testConnectNumOfInterfaces and testConnectNumOfDefinedInterfaces
makes things a bit easier in the long run.

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/conf/virinterfaceobj.c
src/conf/virinterfaceobj.h
src/libvirt_private.syms
src/test/test_driver.c

index 3af972bcb48235e6205ad67cc86339d60dcdf37c..89a4e4ac8b07e8c643deca421525cad8c92b2154 100644 (file)
@@ -215,3 +215,22 @@ virInterfaceObjRemove(virInterfaceObjListPtr interfaces,
         virInterfaceObjUnlock(interfaces->objs[i]);
     }
 }
+
+
+int
+virInterfaceObjNumOfInterfaces(virInterfaceObjListPtr interfaces,
+                               bool wantActive)
+{
+    size_t i;
+    int ninterfaces = 0;
+
+    for (i = 0; (i < interfaces->count); i++) {
+        virInterfaceObjPtr obj = interfaces->objs[i];
+        virInterfaceObjLock(obj);
+        if (wantActive == virInterfaceObjIsActive(obj))
+            ninterfaces++;
+        virInterfaceObjUnlock(obj);
+    }
+
+    return ninterfaces;
+}
index 6c5e2e784fb66bee758d1d030874ba4808f76c07..2f07174d0b3b2a2c9f8f323085407b13fc44c7b4 100644 (file)
@@ -81,4 +81,8 @@ typedef bool
 (*virInterfaceObjListFilter)(virConnectPtr conn,
                              virInterfaceDefPtr def);
 
+int
+virInterfaceObjNumOfInterfaces(virInterfaceObjListPtr interfaces,
+                               bool wantActive);
+
 #endif /* __VIRINTERFACEOBJ_H__ */
index 49d49db812659096b29bca67fb0182196d454037..ab45bb752b843a647a0cc85f16d9005e4c4a62e2 100644 (file)
@@ -938,6 +938,7 @@ virInterfaceObjFindByName;
 virInterfaceObjListClone;
 virInterfaceObjListFree;
 virInterfaceObjLock;
+virInterfaceObjNumOfInterfaces;
 virInterfaceObjRemove;
 virInterfaceObjUnlock;
 
index cce4d2d47d07c03e935f380c711bb3c9c020bca5..6910681e23169ec3bfe97cfb2aa667dfb31629b8 100644 (file)
@@ -3649,18 +3649,12 @@ testInterfaceObjFindByName(testDriverPtr privconn,
 static int testConnectNumOfInterfaces(virConnectPtr conn)
 {
     testDriverPtr privconn = conn->privateData;
-    size_t i;
-    int count = 0;
+    int ninterfaces;
 
     testDriverLock(privconn);
-    for (i = 0; (i < privconn->ifaces.count); i++) {
-        virInterfaceObjLock(privconn->ifaces.objs[i]);
-        if (virInterfaceObjIsActive(privconn->ifaces.objs[i]))
-            count++;
-        virInterfaceObjUnlock(privconn->ifaces.objs[i]);
-    }
+    ninterfaces = virInterfaceObjNumOfInterfaces(&privconn->ifaces, true);
     testDriverUnlock(privconn);
-    return count;
+    return ninterfaces;
 }
 
 static int testConnectListInterfaces(virConnectPtr conn, char **const names, int nnames)
@@ -3695,18 +3689,12 @@ static int testConnectListInterfaces(virConnectPtr conn, char **const names, int
 static int testConnectNumOfDefinedInterfaces(virConnectPtr conn)
 {
     testDriverPtr privconn = conn->privateData;
-    size_t i;
-    int count = 0;
+    int ninterfaces;
 
     testDriverLock(privconn);
-    for (i = 0; i < privconn->ifaces.count; i++) {
-        virInterfaceObjLock(privconn->ifaces.objs[i]);
-        if (!virInterfaceObjIsActive(privconn->ifaces.objs[i]))
-            count++;
-        virInterfaceObjUnlock(privconn->ifaces.objs[i]);
-    }
+    ninterfaces = virInterfaceObjNumOfInterfaces(&privconn->ifaces, false);
     testDriverUnlock(privconn);
-    return count;
+    return ninterfaces;
 }
 
 static int testConnectListDefinedInterfaces(virConnectPtr conn, char **const names, int nnames)