[libvirt] [PATCH 12/18] vz: fix minor type safey issues with net union usage

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Wed Apr 20 14:05:39 UTC 2016


Fix net->data usage accordingly to type field.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
---
 src/vz/vz_sdk.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index 7730bca..328a5bc 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -866,9 +866,6 @@ prlsdkGetNetInfo(PRL_HANDLE netAdapter, virDomainNetDefPtr net, bool isCt)
     PRL_BOOL isConnected;
     int ret = -1;
 
-    net->type = VIR_DOMAIN_NET_TYPE_NETWORK;
-
-
     /* use device name, shown by prlctl as target device
      * for identifying network adapter in virDomainDefineXML */
     if (!(net->ifname = prlsdkGetStringParamVar(PrlVmDevNet_GetHostInterfaceName,
@@ -909,7 +906,9 @@ prlsdkGetNetInfo(PRL_HANDLE netAdapter, virDomainNetDefPtr net, bool isCt)
                        PARALLELS_DOMAIN_ROUTED_NETWORK_NAME) < 0)
             goto cleanup;
     } else {
-        if (!(net->data.network.name =
+        char *netid = NULL;
+
+        if (!(netid =
               prlsdkGetStringParamVar(PrlVmDevNet_GetVirtualNetworkId,
                                       netAdapter)))
             goto cleanup;
@@ -920,8 +919,13 @@ prlsdkGetNetInfo(PRL_HANDLE netAdapter, virDomainNetDefPtr net, bool isCt)
          * predefined ones such as PARALLELS_DOMAIN_BRIDGED_NETWORK_NAME
          * and PARALLELS_DONAIN_ROUTED_NETWORK_NAME
          */
-        if (STRNEQ(net->data.network.name, PARALLELS_DOMAIN_BRIDGED_NETWORK_NAME))
+        if (STRNEQ(netid, PARALLELS_DOMAIN_BRIDGED_NETWORK_NAME)) {
             net->type = VIR_DOMAIN_NET_TYPE_BRIDGE;
+            net->data.network.name = netid;
+        } else {
+            net->type = VIR_DOMAIN_NET_TYPE_NETWORK;
+            net->data.bridge.brname = netid;
+        }
 
     }
 
@@ -3161,7 +3165,7 @@ static int prlsdkConfigureNet(vzDriverPtr driver,
         pret = PrlVirtNet_Create(&vnet);
         prlsdkCheckRetGoto(pret, cleanup);
 
-        pret = PrlVirtNet_SetNetworkId(vnet, net->data.network.name);
+        pret = PrlVirtNet_SetNetworkId(vnet, net->data.bridge.brname);
         prlsdkCheckRetGoto(pret, cleanup);
 
         pret = PrlVirtNet_SetNetworkType(vnet, PVN_BRIDGED_ETHERNET);
@@ -3176,7 +3180,7 @@ static int prlsdkConfigureNet(vzDriverPtr driver,
         pret = PrlVmDev_SetEmulatedType(sdknet, PNA_BRIDGED_ETHERNET);
         prlsdkCheckRetGoto(pret, cleanup);
 
-        pret = PrlVmDevNet_SetVirtualNetworkId(sdknet, net->data.network.name);
+        pret = PrlVmDevNet_SetVirtualNetworkId(sdknet, net->data.bridge.brname);
         prlsdkCheckRetGoto(pret, cleanup);
     }
 
-- 
1.8.3.1




More information about the libvir-list mailing list