]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fix handling of IPv6 listen addresses in cmdDomDisplay
authorJán Tomko <jtomko@redhat.com>
Tue, 1 Oct 2013 09:16:30 +0000 (11:16 +0200)
committerJán Tomko <jtomko@redhat.com>
Tue, 1 Oct 2013 12:45:20 +0000 (14:45 +0200)
Use virSocketAddrIsWildcard instead of STREQ to check for the ANY
address and put brackets around the address if it contains ':'.

tools/virsh-domain.c

index fa012d1b30b38207306549177036e1848348d742..42c99205937d7edb5a877bea21b08cb0928cbe97 100644 (file)
@@ -9043,6 +9043,7 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd)
     int flags = 0;
     bool params = false;
     const char *xpath_fmt = "string(/domain/devices/graphics[@type='%s']/@%s)";
+    virSocketAddr addr;
 
     if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
         return false;
@@ -9126,8 +9127,12 @@ cmdDomDisplay(vshControl *ctl, const vshCmd *cmd)
             virBufferAsprintf(&buf, ":%s@", passwd);
 
         /* Then host name or IP */
-        if (!listen_addr || STREQ((const char *)listen_addr, "0.0.0.0"))
+        if (!listen_addr ||
+            (virSocketAddrParse(&addr, listen_addr, AF_UNSPEC) > 0 &&
+             virSocketAddrIsWildcard(&addr)))
             virBufferAddLit(&buf, "localhost");
+        else if (strchr(listen_addr, ':'))
+            virBufferAsprintf(&buf, "[%s]", listen_addr);
         else
             virBufferAsprintf(&buf, "%s", listen_addr);