[libvirt] [PATCH 3/7] qemu: assume -vnc arg always takes a ':'

John Ferlan jferlan at redhat.com
Thu Nov 5 22:21:39 UTC 2015



On 11/05/2015 12:33 PM, Daniel P. Berrange wrote:
> 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 at redhat.com>
> ---
>  src/qemu/qemu_capabilities.c                       |   4 -
>  src/qemu/qemu_capabilities.h                       |   2 +-
>  src/qemu/qemu_command.c                            | 141 ++++++++++-----------
>  tests/qemucapabilitiesdata/caps_1.2.2-1.caps       |   1 -
>  tests/qemucapabilitiesdata/caps_1.3.1-1.caps       |   1 -
>  tests/qemucapabilitiesdata/caps_1.4.2-1.caps       |   1 -
>  tests/qemucapabilitiesdata/caps_1.5.3-1.caps       |   1 -
>  tests/qemucapabilitiesdata/caps_1.6.0-1.caps       |   1 -
>  tests/qemucapabilitiesdata/caps_1.6.50-1.caps      |   1 -
>  tests/qemucapabilitiesdata/caps_2.1.1-1.caps       |   1 -
>  tests/qemucaps2xmldata/all_1.6.0-1.caps            |   1 -
>  tests/qemucaps2xmldata/nodisksnapshot_1.6.0-1.caps |   1 -
>  tests/qemuhelptest.c                               |   8 --
>  tests/qemuxml2argvtest.c                           |   1 -
>  tests/qemuxml2xmltest.c                            |   1 -
>  tests/qemuxmlnstest.c                              |   1 -
>  16 files changed, 68 insertions(+), 99 deletions(-)

[...]

couple of formatting nits:

> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index 26dc354..cd79544 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -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"));
> +    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;

This goto error needs to be moved left 4 spaces

> -            }
> +        }
>  
> -            virBufferAsprintf(&opt, ",share=%s",
> -                              virDomainGraphicsVNCSharePolicyTypeToString(
> +        virBufferAsprintf(&opt, ",share=%s",
> +                          virDomainGraphicsVNCSharePolicyTypeToString(
>                                graphics->data.vnc.sharePolicy));

This line needs to move left 4 spaces

> -        }
> +    }
>  
> -        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");

[...]




More information about the libvir-list mailing list