Re: [PATCH] virsh: fix show the wrong IP address for network type listen address graphic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 02/11/2015 04:40 AM, Laine Stump wrote:
On 02/10/2015 04:35 AM, Luyao Huang wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1191016

We try to get the IP address in /domain/devices/graphics/@listen, howerver
for the network type listen address donnot have this parameter, it will
show the address in the /domain/devices/graphics/listen/@address, running
XML like this:

  <graphics type='spice' port='5901' autoport='yes' keymap='en-us'>
   <listen type='network' address='192.168.122.1' network='default'/>
  </graphics>

This patch will try to get the IP address in this path
/domain/devices/graphics/listen/@address
That will work when the libvirtd being connected to is 0.9.4 or later,
but earlier versions of libvirt don't have the <listen> subelement;
instead they just have a 'listen' attribute directly inside <graphics>
that contains the address. All newer versions of libvirt are supposed to
populate that from <listen>[0] for backward compatibility.

The real bug here is that the listen attribute in <graphics> isn't being
filled in in the case of type='network' when the domain is active. On
the other hand, fixing the problem there would leave it unfixed for
cases where the client is a new libvirt but the server is running
libvirt between 0.9.4 and 1.2.12. So I think what is needed is for your
patch to check @listen, and if nothing is found there, *then* check
listen/@address. I attached a patch to this mail that I propose
squashing into your patch before pushing. Let me know if it behaves
properly and looks correct.

Beyond that, the server side should still be fixed. I just sent a patch
that does that:

https://www.redhat.com/archives/libvir-list/2015-February/msg00332.html

Between the two patches, we will have fixed the problem for all versions
of server, as long as the client is new enough.

Oh, i forgot the vncdisplay, it should also be fixed, i attached patch to this mail.

Luyao
>From fcc4e7194e61788a459674d8041259309b4d867b Mon Sep 17 00:00:00 2001
From: Luyao Huang <lhuang@xxxxxxxxxx>
Date: Wed, 11 Feb 2015 10:18:10 +0800
Subject: [PATCH] virsh: fix vncdisplay get wrong ip address when listen type
 is network

Just like the fix in domdisplay.
---
 tools/virsh-domain.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 358d61c..8dd6b5e 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -10237,6 +10237,18 @@ cmdVNCDisplay(vshControl *ctl, const vshCmd *cmd)
 
     listen_addr = virXPathString("string(/domain/devices/graphics"
                                  "[@type='vnc']/@listen)", ctxt);
+    if (!listen_addr) {
+        /* The subelement address - <listen address='xyz'/> -
+         * *should* have been automatically backfilled into its
+         * parent <graphics listen='xyz'> (which we just tried to
+         * retrieve into listen_addr above) but in some cases it
+         * isn't, so we also do an explicit check for the
+         * subelement (which, by the way, doesn't exist on libvirt
+         * < 0.9.4, so we really do need to check both places)
+         */
+        listen_addr = virXPathString("string(/domain/devices/graphics"
+                                     "[@type='vnc']/listen/@address)", ctxt);
+    }
     if (listen_addr == NULL || STREQ(listen_addr, "0.0.0.0"))
         vshPrint(ctl, ":%d\n", port-5900);
     else
-- 
1.8.3.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]