[libvirt] [PATCH 8/8] parallels: handle network adapters of type 'routed'

Dmitry Guryanov dguryanov at parallels.com
Tue Dec 11 10:59:49 UTC 2012


Network adapters of type 'routed' is a special case. Other adapters
have 'network' parameter in prlctl's output instead.

Routed network adapters should be connected to 'routed' network
from libvirt's view.

Signed-off-by: Dmitry Guryanov <dguryanov at parallels.com>
---
 src/parallels/parallels_driver.c |   42 +++++++++++++++++++++++++++++++------
 1 files changed, 35 insertions(+), 7 deletions(-)

diff --git a/src/parallels/parallels_driver.c b/src/parallels/parallels_driver.c
index 21279c0..f16777a 100644
--- a/src/parallels/parallels_driver.c
+++ b/src/parallels/parallels_driver.c
@@ -482,13 +482,34 @@ parallelsGetNetInfo(virDomainNetDefPtr net,
         goto error;
     }
 
-    if (!(tmp = virJSONValueObjectGetString(value, "network"))) {
-        parallelsParseError();
-        goto error;
-    }
 
-    if (!(net->data.network.name = strdup(tmp))) {
-        virReportOOMError();
+    if (virJSONValueObjectHasKey(value, "network")) {
+        if (!(tmp = virJSONValueObjectGetString(value, "network"))) {
+            parallelsParseError();
+            goto error;
+        }
+
+        if (!(net->data.network.name = strdup(tmp))) {
+            virReportOOMError();
+            goto error;
+        }
+    } else if (virJSONValueObjectHasKey(value, "type")) {
+        if (!(tmp = virJSONValueObjectGetString(value, "type"))) {
+            parallelsParseError();
+            goto error;
+        }
+
+        if (!STREQ(tmp, "routed")) {
+            parallelsParseError();
+            goto error;
+        }
+
+        if (!(net->data.network.name = strdup(PARALLELS_ROUTED_NETWORK_NAME))) {
+            virReportOOMError();
+            goto error;
+        }
+    } else {
+        parallelsParseError();
         goto error;
     }
 
@@ -1866,7 +1887,14 @@ static int parallelsApplyIfaceParams(parallelsDomObjPtr pdom,
     }
 
     if (!STREQ_NULLABLE(oldnet->data.network.name, newnet->data.network.name)) {
-        virCommandAddArgFormat(cmd, "--network=%s", newnet->data.network.name);
+        if (STREQ_NULLABLE(newnet->data.network.name,
+                           PARALLELS_ROUTED_NETWORK_NAME)) {
+            virCommandAddArgFormat(cmd, "--type=routed");
+        } else {
+            virCommandAddArgFormat(cmd, "--network=%s",
+                                   newnet->data.network.name);
+        }
+
         is_changed = true;
     }
 
-- 
1.7.7.6




More information about the libvir-list mailing list