]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
vbox: Rewrite vboxConnectListDefinedNetworks
authorTaowei <uaedante@gmail.com>
Thu, 2 Oct 2014 03:30:31 +0000 (11:30 +0800)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 3 Oct 2014 08:43:04 +0000 (10:43 +0200)
src/vbox/vbox_network.c
src/vbox/vbox_tmpl.c
src/vbox/vbox_uniformed_api.h

index a0f7e66ee8789d44bbaefbf6f57a99f3d4f9f41d..51ee8680ec624d0d6b7fbc247bc63e7fc4a4988d 100644 (file)
@@ -242,3 +242,60 @@ int vboxConnectNumOfDefinedNetworks(virConnectPtr conn)
     VIR_DEBUG("numActive: %d", ret);
     return ret;
 }
+
+int vboxConnectListDefinedNetworks(virConnectPtr conn, char **const names, int nnames)
+{
+    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; (ret < nnames) && (i < networkInterfaces.count); i++) {
+        IHostNetworkInterface *networkInterface = networkInterfaces.items[i];
+        PRUint32 interfaceType = 0;
+        char *nameUtf8 = NULL;
+        PRUnichar *nameUtf16 = NULL;
+        PRUint32 status = HostNetworkInterfaceStatus_Unknown;
+
+        if (!networkInterface)
+            continue;
+
+        gVBoxAPI.UIHNInterface.GetInterfaceType(networkInterface, &interfaceType);
+
+        if (interfaceType != HostNetworkInterfaceType_HostOnly)
+            continue;
+
+        gVBoxAPI.UIHNInterface.GetStatus(networkInterface, &status);
+
+        if (status != HostNetworkInterfaceStatus_Down)
+            continue;
+
+        gVBoxAPI.UIHNInterface.GetName(networkInterface, &nameUtf16);
+        VBOX_UTF16_TO_UTF8(nameUtf16, &nameUtf8);
+
+        VIR_DEBUG("nnames[%d]: %s", ret, nameUtf8);
+        if (VIR_STRDUP(names[ret], nameUtf8) >= 0)
+            ret++;
+
+        VBOX_UTF8_FREE(nameUtf8);
+        VBOX_UTF16_FREE(nameUtf16);
+    }
+
+    gVBoxAPI.UArray.vboxArrayRelease(&networkInterfaces);
+
+    VBOX_RELEASE(host);
+
+    return ret;
+}
index fec9ce17092c9fa556e636e001984b5984a2d9ca..ed75656411e07ebc5a079d5cd7464443834464c6 100644 (file)
@@ -2060,51 +2060,6 @@ _registerDomainEvent(virDriverPtr driver)
  * The Network Functions here on
  */
 
-static int vboxConnectListDefinedNetworks(virConnectPtr conn, char **const names, int nnames) {
-    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; (ret < nnames) && (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) {
-                    char *nameUtf8       = NULL;
-                    PRUnichar *nameUtf16 = NULL;
-
-                    networkInterface->vtbl->GetName(networkInterface, &nameUtf16);
-                    VBOX_UTF16_TO_UTF8(nameUtf16, &nameUtf8);
-
-                    VIR_DEBUG("nnames[%d]: %s", ret, nameUtf8);
-                    if (VIR_STRDUP(names[ret], nameUtf8) >= 0)
-                        ret++;
-
-                    VBOX_UTF8_FREE(nameUtf8);
-                    VBOX_UTF16_FREE(nameUtf16);
-                }
-            }
-        }
-    }
-
-    vboxArrayRelease(&networkInterfaces);
-
-    VBOX_RELEASE(host);
-
-    return ret;
-}
-
 static virNetworkPtr
 vboxNetworkLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
 {
index 2ca90ffde2337e02256fc515d755aba2d8490617..e6729f25a13723dbe1d043e38d0f1c68a6f562f3 100644 (file)
@@ -551,6 +551,7 @@ int vboxNetworkClose(virConnectPtr conn);
 int vboxConnectNumOfNetworks(virConnectPtr conn);
 int vboxConnectListNetworks(virConnectPtr conn, char **const names, int nnames);
 int vboxConnectNumOfDefinedNetworks(virConnectPtr conn);
+int vboxConnectListDefinedNetworks(virConnectPtr conn, char **const names, int nnames);
 
 /* Version specified functions for installing uniformed API */
 void vbox22InstallUniformedAPI(vboxUniformedAPI *pVBoxAPI);