]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_process: separate graphics socket and address generation
authorPavel Hrdina <phrdina@redhat.com>
Wed, 18 May 2016 11:27:28 +0000 (13:27 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Fri, 20 May 2016 08:16:49 +0000 (10:16 +0200)
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
src/qemu/qemu_process.c

index fb8df6aeeff1e91b6baf1c7aa18a8ff622fa6dd9..50a6f09221805234ef6871685309fc68043c6451 100644 (file)
@@ -4017,6 +4017,62 @@ qemuProcessGraphicsSetupNetworkAddress(virDomainGraphicsListenDefPtr glisten,
 }
 
 
+static int
+qemuProcessGraphicsSetupListen(virQEMUDriverConfigPtr cfg,
+                               virDomainGraphicsDefPtr graphics)
+{
+    char *listenAddr = NULL;
+    size_t i;
+
+    switch (graphics->type) {
+    case VIR_DOMAIN_GRAPHICS_TYPE_VNC:
+        listenAddr = cfg->vncListen;
+        break;
+
+    case VIR_DOMAIN_GRAPHICS_TYPE_SPICE:
+        listenAddr = cfg->spiceListen;
+        break;
+
+    case VIR_DOMAIN_GRAPHICS_TYPE_SDL:
+    case VIR_DOMAIN_GRAPHICS_TYPE_RDP:
+    case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP:
+    case VIR_DOMAIN_GRAPHICS_TYPE_LAST:
+        break;
+    }
+
+    for (i = 0; i < graphics->nListens; i++) {
+        virDomainGraphicsListenDefPtr glisten = &graphics->listens[i];
+
+        switch (glisten->type) {
+        case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS:
+            if (glisten->address || !listenAddr)
+                continue;
+
+            if (VIR_STRDUP(glisten->address, listenAddr) < 0)
+                return -1;
+
+            glisten->fromConfig = true;
+            break;
+
+        case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK:
+            if (glisten->address || !listenAddr)
+                continue;
+
+            if (qemuProcessGraphicsSetupNetworkAddress(glisten,
+                                                       listenAddr) < 0)
+                return -1;
+            break;
+
+        case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE:
+        case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST:
+            break;
+        }
+    }
+
+    return 0;
+}
+
+
 static int
 qemuProcessSetupGraphics(virQEMUDriverPtr driver,
                          virDomainObjPtr vm,
@@ -4024,7 +4080,7 @@ qemuProcessSetupGraphics(virQEMUDriverPtr driver,
 {
     virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
     bool allocate = !(flags & VIR_QEMU_PROCESS_START_PRETEND);
-    size_t i, j;
+    size_t i;
     int ret = -1;
 
     if (allocate && qemuProcessGraphicsReservePorts(driver, vm) < 0)
@@ -4032,21 +4088,16 @@ qemuProcessSetupGraphics(virQEMUDriverPtr driver,
 
     for (i = 0; i < vm->def->ngraphics; ++i) {
         virDomainGraphicsDefPtr graphics = vm->def->graphics[i];
-        char *listenAddr = NULL;
 
         switch (graphics->type) {
         case VIR_DOMAIN_GRAPHICS_TYPE_VNC:
             if (qemuProcessVNCAllocatePorts(driver, graphics, allocate) < 0)
                 goto cleanup;
-
-            listenAddr = cfg->vncListen;
             break;
 
         case VIR_DOMAIN_GRAPHICS_TYPE_SPICE:
             if (qemuProcessSPICEAllocatePorts(driver, cfg, graphics, allocate) < 0)
                 goto cleanup;
-
-            listenAddr = cfg->spiceListen;
             break;
 
         case VIR_DOMAIN_GRAPHICS_TYPE_SDL:
@@ -4056,34 +4107,8 @@ qemuProcessSetupGraphics(virQEMUDriverPtr driver,
             break;
         }
 
-        for (j = 0; j < graphics->nListens; j++) {
-            virDomainGraphicsListenDefPtr glisten = &graphics->listens[j];
-
-            switch (glisten->type) {
-            case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS:
-                if (glisten->address || !listenAddr)
-                    continue;
-
-                if (VIR_STRDUP(glisten->address, listenAddr) < 0)
-                    goto cleanup;
-
-                glisten->fromConfig = true;
-                break;
-
-            case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK:
-                if (glisten->address || !listenAddr)
-                    continue;
-
-                if (qemuProcessGraphicsSetupNetworkAddress(glisten,
-                                                           listenAddr) < 0)
-                    goto cleanup;
-                break;
-
-            case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE:
-            case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST:
-                break;
-            }
-        }
+        if (qemuProcessGraphicsSetupListen(cfg, graphics) < 0)
+            goto cleanup;
     }
 
     ret = 0;