[PATCH 06/10] parallels: fix parallelsLoadNetworks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Don't fail initialization of parallels driver if
parallelsLoadNetwork fails for optional networks.
This can happen when some of them are added manually
and configured incompletely. PCS requires only two networks
created automatically (named Host-Only and Bridged), others
are optional and their incompletenes can be ignored.

Signed-off-by: Maxim Nestratov <mnestratov@xxxxxxxxxxxxx>
---
 src/parallels/parallels_network.c |   29 +++++++++++++++++++++--------
 1 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/parallels/parallels_network.c b/src/parallels/parallels_network.c
index 2c793c1..45d1e4c 100644
--- a/src/parallels/parallels_network.c
+++ b/src/parallels/parallels_network.c
@@ -180,9 +180,10 @@ static int parallelsGetHostOnlyNetInfo(virNetworkDefPtr def, const char *name)
     return ret;
 }
 
-static virNetworkObjPtr
+static int
 parallelsLoadNetwork(parallelsConnPtr privconn, virJSONValuePtr jobj)
 {
+    int ret = -1;
     virNetworkObjPtr net;
     virNetworkDefPtr def;
     const char *tmp;
@@ -214,13 +215,25 @@ parallelsLoadNetwork(parallelsConnPtr privconn, virJSONValuePtr jobj)
     if (STREQ(tmp, PARALLELS_BRIDGED_NETWORK_TYPE)) {
         def->forward.type = VIR_NETWORK_FORWARD_BRIDGE;
 
-        if (parallelsGetBridgedNetInfo(def, jobj) < 0)
+        if (parallelsGetBridgedNetInfo(def, jobj) < 0) {
+
+            /* Only mandatory networks required to be configured completely */
+            if (!STREQ(def->name, PARALLELS_REQUIRED_BRIDGED_NETWORK))
+                ret = 0;
+
             goto cleanup;
+        }
     } else if (STREQ(tmp, PARALLELS_HOSTONLY_NETWORK_TYPE)) {
         def->forward.type = VIR_NETWORK_FORWARD_NONE;
 
-        if (parallelsGetHostOnlyNetInfo(def, def->name) < 0)
+        if (parallelsGetHostOnlyNetInfo(def, def->name) < 0) {
+
+            /* Only mandatory networks required to be configured completely */
+            if (!STREQ(def->name, PARALLELS_REQUIRED_HOSTONLY_NETWORK))
+                ret = 0;
+
             goto cleanup;
+        }
     } else {
         parallelsParseError();
         goto cleanup;
@@ -231,11 +244,12 @@ parallelsLoadNetwork(parallelsConnPtr privconn, virJSONValuePtr jobj)
     net->active = 1;
     net->autostart = 1;
     virNetworkObjUnlock(net);
-    return net;
+    ret = 0;
+    return ret;
 
  cleanup:
     virNetworkDefFree(def);
-    return NULL;
+    return ret;
 }
 
 static virNetworkObjPtr
@@ -277,7 +291,6 @@ parallelsAddRoutedNetwork(parallelsConnPtr privconn)
 static int parallelsLoadNetworks(parallelsConnPtr privconn)
 {
     virJSONValuePtr jobj, jobj2;
-    virNetworkObjPtr net;
     int ret = -1;
     int count;
     size_t i;
@@ -302,8 +315,8 @@ static int parallelsLoadNetworks(parallelsConnPtr privconn)
             goto cleanup;
         }
 
-        net = parallelsLoadNetwork(privconn, jobj2);
-        if (!net)
+        ret = parallelsLoadNetwork(privconn, jobj2);
+        if (!ret)
             goto cleanup;
 
     }
-- 
1.7.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]