[libvirt] [PATCH 06/16] vboxDumpNetwork: re-introduce this function

Ján Tomko jtomko at redhat.com
Fri Feb 23 14:27:32 UTC 2018


Split out per-adapter code from vboxDumpNetworks.

Signed-off-by: Ján Tomko <jtomko at redhat.com>
---
 src/vbox/vbox_common.c | 186 +++++++++++++++++++++++++------------------------
 1 file changed, 96 insertions(+), 90 deletions(-)

diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c
index 03266557a..295f48376 100644
--- a/src/vbox/vbox_common.c
+++ b/src/vbox/vbox_common.c
@@ -3695,6 +3695,101 @@ vboxDumpSharedFolders(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine
 }
 
 static void
+vboxDumpNetwork(virDomainNetDefPtr net, vboxDriverPtr data, INetworkAdapter *adapter)
+{
+    PRUint32 attachmentType = NetworkAttachmentType_Null;
+    PRUint32 adapterType = NetworkAdapterType_Null;
+    PRUnichar *MACAddressUtf16 = NULL;
+    char *MACAddress = NULL;
+    char macaddr[VIR_MAC_STRING_BUFLEN] = {0};
+
+    gVBoxAPI.UINetworkAdapter.GetAttachmentType(adapter, &attachmentType);
+    if (attachmentType == NetworkAttachmentType_NAT) {
+
+        net->type = VIR_DOMAIN_NET_TYPE_USER;
+
+    } else if (attachmentType == NetworkAttachmentType_Bridged) {
+        PRUnichar *hostIntUtf16 = NULL;
+        char *hostInt = NULL;
+
+        net->type = VIR_DOMAIN_NET_TYPE_BRIDGE;
+
+        gVBoxAPI.UINetworkAdapter.GetBridgedInterface(adapter, &hostIntUtf16);
+
+        VBOX_UTF16_TO_UTF8(hostIntUtf16, &hostInt);
+        ignore_value(VIR_STRDUP(net->data.bridge.brname, hostInt));
+
+        VBOX_UTF8_FREE(hostInt);
+        VBOX_UTF16_FREE(hostIntUtf16);
+
+    } else if (attachmentType == NetworkAttachmentType_Internal) {
+        PRUnichar *intNetUtf16 = NULL;
+        char *intNet = NULL;
+
+        net->type = VIR_DOMAIN_NET_TYPE_INTERNAL;
+
+        gVBoxAPI.UINetworkAdapter.GetInternalNetwork(adapter, &intNetUtf16);
+
+        VBOX_UTF16_TO_UTF8(intNetUtf16, &intNet);
+        ignore_value(VIR_STRDUP(net->data.internal.name, intNet));
+
+        VBOX_UTF8_FREE(intNet);
+        VBOX_UTF16_FREE(intNetUtf16);
+
+    } else if (attachmentType == NetworkAttachmentType_HostOnly) {
+        PRUnichar *hostIntUtf16 = NULL;
+        char *hostInt = NULL;
+
+        net->type = VIR_DOMAIN_NET_TYPE_NETWORK;
+
+        gVBoxAPI.UINetworkAdapter.GetHostOnlyInterface(adapter, &hostIntUtf16);
+
+        VBOX_UTF16_TO_UTF8(hostIntUtf16, &hostInt);
+        ignore_value(VIR_STRDUP(net->data.network.name, hostInt));
+
+        VBOX_UTF8_FREE(hostInt);
+        VBOX_UTF16_FREE(hostIntUtf16);
+
+    } else {
+        /* default to user type i.e. NAT in VirtualBox if this
+         * dump is ever used to create a machine.
+         */
+        net->type = VIR_DOMAIN_NET_TYPE_USER;
+    }
+
+    gVBoxAPI.UINetworkAdapter.GetAdapterType(adapter, &adapterType);
+    if (adapterType == NetworkAdapterType_Am79C970A) {
+        ignore_value(VIR_STRDUP(net->model, "Am79C970A"));
+    } else if (adapterType == NetworkAdapterType_Am79C973) {
+        ignore_value(VIR_STRDUP(net->model, "Am79C973"));
+    } else if (adapterType == NetworkAdapterType_I82540EM) {
+        ignore_value(VIR_STRDUP(net->model, "82540EM"));
+    } else if (adapterType == NetworkAdapterType_I82545EM) {
+        ignore_value(VIR_STRDUP(net->model, "82545EM"));
+    } else if (adapterType == NetworkAdapterType_I82543GC) {
+        ignore_value(VIR_STRDUP(net->model, "82543GC"));
+    } else if (gVBoxAPI.APIVersion >= 3000051 &&
+               adapterType == NetworkAdapterType_Virtio) {
+        /* Only vbox 3.1 and later support NetworkAdapterType_Virto */
+        ignore_value(VIR_STRDUP(net->model, "virtio"));
+    }
+
+    gVBoxAPI.UINetworkAdapter.GetMACAddress(adapter, &MACAddressUtf16);
+    VBOX_UTF16_TO_UTF8(MACAddressUtf16, &MACAddress);
+    snprintf(macaddr, VIR_MAC_STRING_BUFLEN,
+             "%c%c:%c%c:%c%c:%c%c:%c%c:%c%c",
+             MACAddress[0], MACAddress[1], MACAddress[2], MACAddress[3],
+             MACAddress[4], MACAddress[5], MACAddress[6], MACAddress[7],
+             MACAddress[8], MACAddress[9], MACAddress[10], MACAddress[11]);
+
+    /* XXX some real error handling here some day ... */
+    ignore_value(virMacAddrParse(macaddr, &net->mac));
+
+    VBOX_UTF16_FREE(MACAddressUtf16);
+    VBOX_UTF8_FREE(MACAddress);
+}
+
+static void
 vboxDumpNetworks(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine, PRUint32 networkAdapterCount)
 {
     PRUint32 netAdpIncCnt = 0;
@@ -3734,98 +3829,9 @@ vboxDumpNetworks(virDomainDefPtr def, vboxDriverPtr data, IMachine *machine, PRU
 
             gVBoxAPI.UINetworkAdapter.GetEnabled(adapter, &enabled);
             if (enabled) {
-                PRUint32 attachmentType = NetworkAttachmentType_Null;
-                PRUint32 adapterType = NetworkAdapterType_Null;
-                PRUnichar *MACAddressUtf16 = NULL;
-                char *MACAddress = NULL;
-                char macaddr[VIR_MAC_STRING_BUFLEN] = {0};
-
-                gVBoxAPI.UINetworkAdapter.GetAttachmentType(adapter, &attachmentType);
-                if (attachmentType == NetworkAttachmentType_NAT) {
-
-                    net->type = VIR_DOMAIN_NET_TYPE_USER;
-
-                } else if (attachmentType == NetworkAttachmentType_Bridged) {
-                    PRUnichar *hostIntUtf16 = NULL;
-                    char *hostInt = NULL;
-
-                    net->type = VIR_DOMAIN_NET_TYPE_BRIDGE;
-
-                    gVBoxAPI.UINetworkAdapter.GetBridgedInterface(adapter, &hostIntUtf16);
-
-                    VBOX_UTF16_TO_UTF8(hostIntUtf16, &hostInt);
-                    ignore_value(VIR_STRDUP(net->data.bridge.brname, hostInt));
-
-                    VBOX_UTF8_FREE(hostInt);
-                    VBOX_UTF16_FREE(hostIntUtf16);
-
-                } else if (attachmentType == NetworkAttachmentType_Internal) {
-                    PRUnichar *intNetUtf16 = NULL;
-                    char *intNet = NULL;
-
-                    net->type = VIR_DOMAIN_NET_TYPE_INTERNAL;
-
-                    gVBoxAPI.UINetworkAdapter.GetInternalNetwork(adapter, &intNetUtf16);
-
-                    VBOX_UTF16_TO_UTF8(intNetUtf16, &intNet);
-                    ignore_value(VIR_STRDUP(net->data.internal.name, intNet));
-
-                    VBOX_UTF8_FREE(intNet);
-                    VBOX_UTF16_FREE(intNetUtf16);
-
-                } else if (attachmentType == NetworkAttachmentType_HostOnly) {
-                    PRUnichar *hostIntUtf16 = NULL;
-                    char *hostInt = NULL;
-
-                    net->type = VIR_DOMAIN_NET_TYPE_NETWORK;
-
-                    gVBoxAPI.UINetworkAdapter.GetHostOnlyInterface(adapter, &hostIntUtf16);
-
-                    VBOX_UTF16_TO_UTF8(hostIntUtf16, &hostInt);
-                    ignore_value(VIR_STRDUP(net->data.network.name, hostInt));
-
-                    VBOX_UTF8_FREE(hostInt);
-                    VBOX_UTF16_FREE(hostIntUtf16);
-
-                } else {
-                    /* default to user type i.e. NAT in VirtualBox if this
-                     * dump is ever used to create a machine.
-                     */
-                    net->type = VIR_DOMAIN_NET_TYPE_USER;
-                }
-
-                gVBoxAPI.UINetworkAdapter.GetAdapterType(adapter, &adapterType);
-                if (adapterType == NetworkAdapterType_Am79C970A) {
-                    ignore_value(VIR_STRDUP(net->model, "Am79C970A"));
-                } else if (adapterType == NetworkAdapterType_Am79C973) {
-                    ignore_value(VIR_STRDUP(net->model, "Am79C973"));
-                } else if (adapterType == NetworkAdapterType_I82540EM) {
-                    ignore_value(VIR_STRDUP(net->model, "82540EM"));
-                } else if (adapterType == NetworkAdapterType_I82545EM) {
-                    ignore_value(VIR_STRDUP(net->model, "82545EM"));
-                } else if (adapterType == NetworkAdapterType_I82543GC) {
-                    ignore_value(VIR_STRDUP(net->model, "82543GC"));
-                } else if (gVBoxAPI.APIVersion >= 3000051 &&
-                           adapterType == NetworkAdapterType_Virtio) {
-                    /* Only vbox 3.1 and later support NetworkAdapterType_Virto */
-                    ignore_value(VIR_STRDUP(net->model, "virtio"));
-                }
-
-                gVBoxAPI.UINetworkAdapter.GetMACAddress(adapter, &MACAddressUtf16);
-                VBOX_UTF16_TO_UTF8(MACAddressUtf16, &MACAddress);
-                snprintf(macaddr, VIR_MAC_STRING_BUFLEN,
-                         "%c%c:%c%c:%c%c:%c%c:%c%c:%c%c",
-                         MACAddress[0], MACAddress[1], MACAddress[2], MACAddress[3],
-                         MACAddress[4], MACAddress[5], MACAddress[6], MACAddress[7],
-                         MACAddress[8], MACAddress[9], MACAddress[10], MACAddress[11]);
-
-                /* XXX some real error handling here some day ... */
-                ignore_value(virMacAddrParse(macaddr, &net->mac));
+                vboxDumpNetwork(net, data, adapter);
 
                 netAdpIncCnt++;
-
-                VBOX_UTF16_FREE(MACAddressUtf16);
-                VBOX_UTF8_FREE(MACAddress);
             }
 
             VBOX_RELEASE(adapter);
-- 
2.13.6




More information about the libvir-list mailing list