]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
qemu: assume -vnc arg always takes a ':'
authorDaniel P. Berrange <berrange@redhat.com>
Thu, 5 Nov 2015 11:56:47 +0000 (11:56 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 10 Nov 2015 10:38:01 +0000 (10:38 +0000)
As of QEMU 0.9.0 the -vnc option accepts a ':' to separate port
from listen address, so the QEMU driver can assume that support
for listen addresses is always available.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
16 files changed:
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.h
src/qemu/qemu_command.c
tests/qemucapabilitiesdata/caps_1.2.2-1.caps
tests/qemucapabilitiesdata/caps_1.3.1-1.caps
tests/qemucapabilitiesdata/caps_1.4.2-1.caps
tests/qemucapabilitiesdata/caps_1.5.3-1.caps
tests/qemucapabilitiesdata/caps_1.6.0-1.caps
tests/qemucapabilitiesdata/caps_1.6.50-1.caps
tests/qemucapabilitiesdata/caps_2.1.1-1.caps
tests/qemucaps2xmldata/all_1.6.0-1.caps
tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.caps
tests/qemuhelptest.c
tests/qemuxml2argvtest.c
tests/qemuxml2xmltest.c
tests/qemuxmlnstest.c

index bbb9e9c5cded8de610a2841217d33c029531bab4..55c310cfc23c7a4fc2b362c9c7451b8b4ecaf295 100644 (file)
@@ -1229,9 +1229,6 @@ virQEMUCapsComputeCmdFlags(const char *help,
         strstr(help, "sockets="))
         virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMP_TOPOLOGY);
 
-    if (version >= 9000)
-        virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_COLON);
-
     if (is_kvm && (version >= 10000 || kvm_version >= 74))
         virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNET_HDR);
 
@@ -3219,7 +3216,6 @@ static qemuMonitorCallbacks callbacks = {
 static void
 virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps)
 {
-    virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_COLON);
     virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_REBOOT);
     virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE);
     virQEMUCapsSet(qemuCaps, QEMU_CAPS_NAME);
index 18bff75a0402ebfe802598c8e9ef5f410862fdbf..af30759bc2790d2d1af2e58ae2535844ebc0e054 100644 (file)
@@ -47,7 +47,7 @@
 typedef enum {
     /* 0 */
     X_QEMU_CAPS_KQEMU, /* Whether KQEMU is compiled in */
-    QEMU_CAPS_VNC_COLON, /* VNC takes or address + display */
+    X_QEMU_CAPS_VNC_COLON, /* VNC takes or address + display */
     QEMU_CAPS_NO_REBOOT, /* Is the -no-reboot flag available */
     QEMU_CAPS_DRIVE, /* Is the new -drive arg available */
     QEMU_CAPS_DRIVE_BOOT, /* Does -drive support boot=on */
index 3d96b05a129736ee2e3b8a4d1ce5bceb379626f8..6b6ea8bd7a55d41fa4ff9d5067990d63672e4bc8 100644 (file)
@@ -8210,97 +8210,90 @@ qemuBuildGraphicsVNCCommandLine(virQEMUDriverConfigPtr cfg,
             goto error;
         }
 
-        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_COLON)) {
-            switch (virDomainGraphicsListenGetType(graphics, 0)) {
-            case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS:
-                listenAddr = virDomainGraphicsListenGetAddress(graphics, 0);
-                break;
-
-            case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK:
-                listenNetwork = virDomainGraphicsListenGetNetwork(graphics, 0);
-                if (!listenNetwork)
-                    break;
-                ret = networkGetNetworkAddress(listenNetwork, &netAddr);
-                if (ret <= -2) {
-                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                                   "%s", _("network-based listen not possible, "
-                                           "network driver not present"));
-                    goto error;
-                }
-                if (ret < 0)
-                    goto error;
+        switch (virDomainGraphicsListenGetType(graphics, 0)) {
+        case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS:
+            listenAddr = virDomainGraphicsListenGetAddress(graphics, 0);
+            break;
 
-                listenAddr = netAddr;
-                /* store the address we found in the <graphics> element so it
-                 * will show up in status. */
-                if (virDomainGraphicsListenSetAddress(graphics, 0,
-                                                      listenAddr, -1, false) < 0)
-                    goto error;
+        case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK:
+            listenNetwork = virDomainGraphicsListenGetNetwork(graphics, 0);
+            if (!listenNetwork)
                 break;
+            ret = networkGetNetworkAddress(listenNetwork, &netAddr);
+            if (ret <= -2) {
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                               "%s", _("network-based listen not possible, "
+                                       "network driver not present"));
+                goto error;
             }
+            if (ret < 0)
+                goto error;
 
-            if (!listenAddr)
-                listenAddr = cfg->vncListen;
+            listenAddr = netAddr;
+            /* store the address we found in the <graphics> element so it
+             * will show up in status. */
+            if (virDomainGraphicsListenSetAddress(graphics, 0,
+                                                  listenAddr, -1, false) < 0)
+                goto error;
+            break;
+        }
 
-            escapeAddr = strchr(listenAddr, ':') != NULL;
-            if (escapeAddr)
-                virBufferAsprintf(&opt, "[%s]", listenAddr);
-            else
-                virBufferAdd(&opt, listenAddr, -1);
-            virBufferAsprintf(&opt, ":%d",
-                              graphics->data.vnc.port - 5900);
+        if (!listenAddr)
+            listenAddr = cfg->vncListen;
 
-            VIR_FREE(netAddr);
-        } else {
-            virBufferAsprintf(&opt, "%d",
-                              graphics->data.vnc.port - 5900);
-        }
+        escapeAddr = strchr(listenAddr, ':') != NULL;
+        if (escapeAddr)
+            virBufferAsprintf(&opt, "[%s]", listenAddr);
+        else
+            virBufferAdd(&opt, listenAddr, -1);
+        virBufferAsprintf(&opt, ":%d",
+                          graphics->data.vnc.port - 5900);
+
+        VIR_FREE(netAddr);
     }
 
-    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_COLON)) {
-        if (!graphics->data.vnc.socket &&
-            graphics->data.vnc.websocket) {
-                if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_WEBSOCKET)) {
-                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                                   _("VNC WebSockets are not supported "
-                                     "with this QEMU binary"));
-                    goto error;
-                }
-                virBufferAsprintf(&opt, ",websocket=%d", graphics->data.vnc.websocket);
-            }
+    if (!graphics->data.vnc.socket &&
+        graphics->data.vnc.websocket) {
+        if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_WEBSOCKET)) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("VNC WebSockets are not supported "
+                             "with this QEMU binary"));
+            goto error;
+        }
+        virBufferAsprintf(&opt, ",websocket=%d", graphics->data.vnc.websocket);
+    }
 
-        if (graphics->data.vnc.sharePolicy) {
-            if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY)) {
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                               _("vnc display sharing policy is not "
-                                 "supported with this QEMU"));
-                goto error;
-            }
+    if (graphics->data.vnc.sharePolicy) {
+        if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY)) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("vnc display sharing policy is not "
+                             "supported with this QEMU"));
+            goto error;
+        }
 
-            virBufferAsprintf(&opt, ",share=%s",
-                              virDomainGraphicsVNCSharePolicyTypeToString(
+        virBufferAsprintf(&opt, ",share=%s",
+                          virDomainGraphicsVNCSharePolicyTypeToString(
                               graphics->data.vnc.sharePolicy));
-        }
+    }
 
-        if (graphics->data.vnc.auth.passwd || cfg->vncPassword)
-            virBufferAddLit(&opt, ",password");
+    if (graphics->data.vnc.auth.passwd || cfg->vncPassword)
+        virBufferAddLit(&opt, ",password");
 
-        if (cfg->vncTLS) {
-            virBufferAddLit(&opt, ",tls");
-            if (cfg->vncTLSx509verify)
-                virBufferAsprintf(&opt, ",x509verify=%s", cfg->vncTLSx509certdir);
-            else
-                virBufferAsprintf(&opt, ",x509=%s", cfg->vncTLSx509certdir);
-        }
+    if (cfg->vncTLS) {
+        virBufferAddLit(&opt, ",tls");
+        if (cfg->vncTLSx509verify)
+            virBufferAsprintf(&opt, ",x509verify=%s", cfg->vncTLSx509certdir);
+        else
+            virBufferAsprintf(&opt, ",x509=%s", cfg->vncTLSx509certdir);
+    }
 
-        if (cfg->vncSASL) {
-            virBufferAddLit(&opt, ",sasl");
+    if (cfg->vncSASL) {
+        virBufferAddLit(&opt, ",sasl");
 
-            if (cfg->vncSASLdir)
-                virCommandAddEnvPair(cmd, "SASL_CONF_PATH", cfg->vncSASLdir);
+        if (cfg->vncSASLdir)
+            virCommandAddEnvPair(cmd, "SASL_CONF_PATH", cfg->vncSASLdir);
 
-            /* TODO: Support ACLs later */
-        }
+        /* TODO: Support ACLs later */
     }
 
     virCommandAddArg(cmd, "-vnc");
index 5f179de06943e98abe951118aa129d12871ab162..743951b345cad998f82948e2ec0aaa04a1927baf 100644 (file)
@@ -1,5 +1,4 @@
   <qemuCaps>
-    <flag name='vnc-colon'/>
     <flag name='no-reboot'/>
     <flag name='drive'/>
     <flag name='name'/>
index dad097a0702b0bf2ddd27f87dcc7ef073c1f654c..a3e9b4a93b02afcc889a7ff68104ef9381101419 100644 (file)
@@ -1,5 +1,4 @@
   <qemuCaps>
-    <flag name='vnc-colon'/>
     <flag name='no-reboot'/>
     <flag name='drive'/>
     <flag name='name'/>
index 1f2682ee52dc8de82a37735c64398f7817775749..e1c0354440fef2b5790f9c1740908b80abdc227c 100644 (file)
@@ -1,5 +1,4 @@
   <qemuCaps>
-    <flag name='vnc-colon'/>
     <flag name='no-reboot'/>
     <flag name='drive'/>
     <flag name='name'/>
index 95f364f36248703c089aae0d6265ab31835338bc..1ba18d616dbfba1baaf8fcd07fd87a61889be05a 100644 (file)
@@ -1,5 +1,4 @@
   <qemuCaps>
-    <flag name='vnc-colon'/>
     <flag name='no-reboot'/>
     <flag name='drive'/>
     <flag name='name'/>
index 6533a6e6f9ff480ab1972d4b7feb7e7ec58962bc..738cbae42367bf45c013e98b88b4270034a5f8f2 100644 (file)
@@ -1,5 +1,4 @@
   <qemuCaps>
-    <flag name='vnc-colon'/>
     <flag name='no-reboot'/>
     <flag name='drive'/>
     <flag name='name'/>
index b2e775bb7449c34077ec23a887ab98eaf065aae2..1c015237d482ab7532c6a3be9f163aea4e50ca41 100644 (file)
@@ -1,5 +1,4 @@
   <qemuCaps>
-    <flag name='vnc-colon'/>
     <flag name='no-reboot'/>
     <flag name='drive'/>
     <flag name='name'/>
index 88fe13a7c0633daf41988d00110cf054e5264677..3bf0e6c7e0abbb49d3822e6da7a5e357d5650f7d 100644 (file)
@@ -1,5 +1,4 @@
   <qemuCaps>
-    <flag name='vnc-colon'/>
     <flag name='no-reboot'/>
     <flag name='drive'/>
     <flag name='name'/>
index 2d50cf98fc5de4bf79e18fe9d4d297d1d835f51a..7a16aa7e92930833a8ec086b7c02c6fe53e5544e 100644 (file)
@@ -1,5 +1,4 @@
   <qemuCaps>
-    <flag name='vnc-colon'/>
     <flag name='no-reboot'/>
     <flag name='drive'/>
     <flag name='name'/>
index 5092e419643af6212e9eb67c12017c8f6e4bdfd9..74399fc7aca0216fc968f8a403146cb69b3e0374 100644 (file)
@@ -1,5 +1,4 @@
   <qemuCaps>
-    <flag name='vnc-colon'/>
     <flag name='no-reboot'/>
     <flag name='drive'/>
     <flag name='name'/>
index 9f4bfea10f9e3e27ce055b45d18e4871aba8bbeb..91be08da8f4c43be3890126a1727e5240c2578fa 100644 (file)
@@ -152,7 +152,6 @@ mymain(void)
     DO_TEST_FULL(name, version, is_kvm, kvm_version, VIR_ERR_OK, __VA_ARGS__)
 
     DO_TEST("qemu-0.12.1", 12001, 0, 0,
-            QEMU_CAPS_VNC_COLON,
             QEMU_CAPS_NO_REBOOT,
             QEMU_CAPS_DRIVE,
             QEMU_CAPS_NAME,
@@ -188,7 +187,6 @@ mymain(void)
             QEMU_CAPS_CPU_HOST,
             QEMU_CAPS_VNC);
     DO_TEST("qemu-kvm-0.12.1.2-rhel60", 12001, 1, 0,
-            QEMU_CAPS_VNC_COLON,
             QEMU_CAPS_NO_REBOOT,
             QEMU_CAPS_DRIVE,
             QEMU_CAPS_DRIVE_BOOT,
@@ -251,7 +249,6 @@ mymain(void)
             QEMU_CAPS_DEVICE_E1000,
             QEMU_CAPS_DEVICE_VIRTIO_NET);
     DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
-            QEMU_CAPS_VNC_COLON,
             QEMU_CAPS_NO_REBOOT,
             QEMU_CAPS_DRIVE,
             QEMU_CAPS_DRIVE_BOOT,
@@ -294,7 +291,6 @@ mymain(void)
             QEMU_CAPS_CPU_HOST,
             QEMU_CAPS_VNC);
     DO_TEST("qemu-kvm-0.13.0", 13000, 1, 0,
-            QEMU_CAPS_VNC_COLON,
             QEMU_CAPS_NO_REBOOT,
             QEMU_CAPS_DRIVE,
             QEMU_CAPS_DRIVE_BOOT,
@@ -369,7 +365,6 @@ mymain(void)
             QEMU_CAPS_DEVICE_E1000,
             QEMU_CAPS_DEVICE_VIRTIO_NET);
     DO_TEST("qemu-kvm-0.12.1.2-rhel61", 12001, 1, 0,
-            QEMU_CAPS_VNC_COLON,
             QEMU_CAPS_NO_REBOOT,
             QEMU_CAPS_DRIVE,
             QEMU_CAPS_NAME,
@@ -439,7 +434,6 @@ mymain(void)
             QEMU_CAPS_DEVICE_E1000,
             QEMU_CAPS_DEVICE_VIRTIO_NET);
     DO_TEST("qemu-kvm-0.12.1.2-rhel62-beta", 12001, 1, 0,
-            QEMU_CAPS_VNC_COLON,
             QEMU_CAPS_NO_REBOOT,
             QEMU_CAPS_DRIVE,
             QEMU_CAPS_NAME,
@@ -517,7 +511,6 @@ mymain(void)
             QEMU_CAPS_DEVICE_E1000,
             QEMU_CAPS_DEVICE_VIRTIO_NET);
     DO_TEST("qemu-1.0", 1000000, 0, 0,
-            QEMU_CAPS_VNC_COLON,
             QEMU_CAPS_NO_REBOOT,
             QEMU_CAPS_DRIVE,
             QEMU_CAPS_NAME,
@@ -610,7 +603,6 @@ mymain(void)
             QEMU_CAPS_DEVICE_E1000,
             QEMU_CAPS_DEVICE_VIRTIO_NET);
     DO_TEST("qemu-1.1.0", 1001000, 0, 0,
-            QEMU_CAPS_VNC_COLON,
             QEMU_CAPS_NO_REBOOT,
             QEMU_CAPS_DRIVE,
             QEMU_CAPS_NAME,
index 53580e3d685eef3ec53719f8f16cee1f60efe2d3..9c92eff9e4f7ba2a78841ab6ca655ba02d1a3295 100644 (file)
@@ -292,7 +292,6 @@ static int testCompareXMLToArgvFiles(const char *xml,
     monitor_chr.data.nix.listen = true;
 
     virQEMUCapsSetList(extraFlags,
-                       QEMU_CAPS_VNC_COLON,
                        QEMU_CAPS_NO_REBOOT,
                        QEMU_CAPS_NO_ACPI,
                        QEMU_CAPS_LAST);
index 5a9c67df7e022c5e3a48d5c4fb342cb2ee9feac9..2583e67790a1c176439a0af77e70235338d167f4 100644 (file)
@@ -114,7 +114,6 @@ static const char testStatusXMLPrefix[] =
 "    <vcpu pid='3803519'/>\n"
 "  </vcpus>\n"
 "  <qemuCaps>\n"
-"    <flag name='vnc-colon'/>\n"
 "    <flag name='no-reboot'/>\n"
 "    <flag name='drive'/>\n"
 "    <flag name='name'/>\n"
index 65bf1d30ff528440a0b23fe7721ee4a0ade72fc0..3e1b4aaf2a8feeb429e288986b626d6add9fec56 100644 (file)
@@ -86,7 +86,6 @@ static int testCompareXMLToArgvFiles(const char *xml,
         goto fail;
 
     virQEMUCapsSetList(extraFlags,
-                       QEMU_CAPS_VNC_COLON,
                        QEMU_CAPS_NO_REBOOT,
                        QEMU_CAPS_NO_ACPI,
                        QEMU_CAPS_LAST);