[virt-tools-list] [PATCH virt-viewer v2] Add support for raw IPv6 addresses in VNC & libvirt URIs

Laine Stump laine at redhat.com
Sat Apr 21 10:55:15 UTC 2012


On 04/19/2012 06:03 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
>
> Support   vnc://[x:y:z:]:5901/  for raw IPv6 addresses in URIs,
> and qemu+ssh://root@[x:y:x:]:22/ for raw IPv6 addresses in
> libvirt URIs
> ---
>  src/virt-viewer-session-vnc.c |   17 ++++++++++++++++-
>  src/virt-viewer-util.c        |   14 +++++++++++---
>  2 files changed, 27 insertions(+), 4 deletions(-)
>
> diff --git a/src/virt-viewer-session-vnc.c b/src/virt-viewer-session-vnc.c
> index 3e27566..238c865 100644
> --- a/src/virt-viewer-session-vnc.c
> +++ b/src/virt-viewer-session-vnc.c
> @@ -197,6 +197,7 @@ virt_viewer_session_vnc_open_uri(VirtViewerSession* session,
>      VirtViewerSessionVnc *self = VIRT_VIEWER_SESSION_VNC(session);
>      xmlURIPtr uri = NULL;
>      gchar *portstr;
> +    gchar *hoststr = NULL;
>      gboolean ret;
>  
>      g_return_val_if_fail(self != NULL, FALSE);
> @@ -207,8 +208,22 @@ virt_viewer_session_vnc_open_uri(VirtViewerSession* session,
>  
>      portstr = g_strdup_printf("%d", uri->port);
>  
> -    ret = vnc_display_open_host(self->priv->vnc, uri->server, portstr);
> +    if (uri->server) {
> +        if (uri->server[0] == '[') {
> +            gchar *tmp;
> +            hoststr = g_strdup(uri->server + 1);
> +            if ((tmp = strchr(hoststr, ']')))
> +                *tmp = '\0';
> +        } else {
> +            hoststr = g_strdup(uri->server);
> +        }
> +    }
> +
> +    ret = vnc_display_open_host(self->priv->vnc,
> +                                hoststr,
> +                                portstr);
>      g_free(portstr);
> +    g_free(hoststr);
>      xmlFreeURI(uri);
>      return ret;
>  }
> diff --git a/src/virt-viewer-util.c b/src/virt-viewer-util.c
> index e4a0cc4..c1182af 100644
> --- a/src/virt-viewer-util.c
> +++ b/src/virt-viewer-util.c
> @@ -91,10 +91,18 @@ virt_viewer_util_extract_host(const char *uristr,
>      g_return_val_if_fail(uri != NULL, 1);
>  
>      if (host) {
> -        if (!uri || !uri->server)
> +        if (!uri || !uri->server) {
>              *host = g_strdup("localhost");
> -        else
> -            *host = g_strdup(uri->server);
> +        } else {
> +            if (uri->server[0] == '[') {
> +                gchar *tmp;
> +                *host = g_strdup(uri->server + 1);
> +                if ((tmp = strchr(*host, ']')))
> +                    *tmp = '\0';
> +            } else {
> +                *host = g_strdup(uri->server);
> +            }
> +        }
>      }
>  
>      if (user) {

ACK.




More information about the virt-tools-list mailing list