[libvirt] [PATCHv2 05/13] vbox: Rewrite vboxConnectNumOfDefinedNetworks

Taowei uaedante at gmail.com
Wed Sep 10 02:19:05 UTC 2014


---
 src/vbox/vbox_common.c        |   45 +++++++++++++++++++++++++++++++++++++++++
 src/vbox/vbox_tmpl.c          |   34 -------------------------------
 src/vbox/vbox_uniformed_api.h |    1 +
 3 files changed, 46 insertions(+), 34 deletions(-)

diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c
index b23c136..2f2dbb9 100644
--- a/src/vbox/vbox_common.c
+++ b/src/vbox/vbox_common.c
@@ -7587,6 +7587,51 @@ int vboxConnectListNetworks(virConnectPtr conn, char **const names, int nnames)
     return ret;
 }
 
+int vboxConnectNumOfDefinedNetworks(virConnectPtr conn)
+{
+    vboxGlobalData *data = conn->privateData;
+    vboxArray networkInterfaces = VBOX_ARRAY_INITIALIZER;
+    IHost *host = NULL;
+    size_t i = 0;
+    int ret = -1;
+
+    if (!data->vboxObj)
+        return ret;
+
+    gVBoxAPI.UIVirtualBox.GetHost(data->vboxObj, &host);
+    if (!host)
+        return ret;
+
+    gVBoxAPI.UArray.vboxArrayGet(&networkInterfaces, host,
+                                 gVBoxAPI.UArray.handleHostGetNetworkInterfaces(host));
+
+    ret = 0;
+    for (i = 0; i < networkInterfaces.count; i++) {
+        IHostNetworkInterface *networkInterface = networkInterfaces.items[i];
+        PRUint32 status = HostNetworkInterfaceStatus_Unknown;
+        PRUint32 interfaceType = 0;
+
+        if (!networkInterface)
+            continue;
+
+        gVBoxAPI.UIHNInterface.GetInterfaceType(networkInterface, &interfaceType);
+        if (interfaceType != HostNetworkInterfaceType_HostOnly)
+            continue;
+
+        gVBoxAPI.UIHNInterface.GetStatus(networkInterface, &status);
+
+        if (status == HostNetworkInterfaceStatus_Down)
+            ret++;
+    }
+
+    gVBoxAPI.UArray.vboxArrayRelease(&networkInterfaces);
+
+    VBOX_RELEASE(host);
+
+    VIR_DEBUG("numActive: %d", ret);
+    return ret;
+}
+
 /**
  * Function Tables
  */
diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c
index c7aae25..fec9ce1 100644
--- a/src/vbox/vbox_tmpl.c
+++ b/src/vbox/vbox_tmpl.c
@@ -2060,40 +2060,6 @@ _registerDomainEvent(virDriverPtr driver)
  * The Network Functions here on
  */
 
-static int vboxConnectNumOfDefinedNetworks(virConnectPtr conn)
-{
-    VBOX_OBJECT_HOST_CHECK(conn, int, 0);
-    vboxArray networkInterfaces = VBOX_ARRAY_INITIALIZER;
-    size_t i = 0;
-
-    vboxArrayGet(&networkInterfaces, host, host->vtbl->GetNetworkInterfaces);
-
-    for (i = 0; i < networkInterfaces.count; i++) {
-        IHostNetworkInterface *networkInterface = networkInterfaces.items[i];
-
-        if (networkInterface) {
-            PRUint32 interfaceType = 0;
-
-            networkInterface->vtbl->GetInterfaceType(networkInterface, &interfaceType);
-            if (interfaceType == HostNetworkInterfaceType_HostOnly) {
-                PRUint32 status = HostNetworkInterfaceStatus_Unknown;
-
-                networkInterface->vtbl->GetStatus(networkInterface, &status);
-
-                if (status == HostNetworkInterfaceStatus_Down)
-                    ret++;
-            }
-        }
-    }
-
-    vboxArrayRelease(&networkInterfaces);
-
-    VBOX_RELEASE(host);
-
-    VIR_DEBUG("numActive: %d", ret);
-    return ret;
-}
-
 static int vboxConnectListDefinedNetworks(virConnectPtr conn, char **const names, int nnames) {
     VBOX_OBJECT_HOST_CHECK(conn, int, 0);
     vboxArray networkInterfaces = VBOX_ARRAY_INITIALIZER;
diff --git a/src/vbox/vbox_uniformed_api.h b/src/vbox/vbox_uniformed_api.h
index ec8e334..2ca90ff 100644
--- a/src/vbox/vbox_uniformed_api.h
+++ b/src/vbox/vbox_uniformed_api.h
@@ -550,6 +550,7 @@ virDrvOpenStatus vboxNetworkOpen(virConnectPtr conn,
 int vboxNetworkClose(virConnectPtr conn);
 int vboxConnectNumOfNetworks(virConnectPtr conn);
 int vboxConnectListNetworks(virConnectPtr conn, char **const names, int nnames);
+int vboxConnectNumOfDefinedNetworks(virConnectPtr conn);
 
 /* Version specified functions for installing uniformed API */
 void vbox22InstallUniformedAPI(vboxUniformedAPI *pVBoxAPI);
-- 
1.7.9.5




More information about the libvir-list mailing list