virt-viewer: Support newer libvirt xml format

Since libvirt 0.9.4 there is a new listen element which can be used
to specify address instead of using the attributes of graphics element.

Also add support for listen type socket - available for Qemu since
libvirt 2.0.0

Resolves: rhbz#1411765

Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
Pavel Grunt 2017-04-07 12:05:17 +02:00
parent 95faf12283
commit effa832ca5

View File

@ -565,11 +565,21 @@ virt_viewer_extract_connect_info(VirtViewer *self,
}
if (gport || gtlsport) {
xpath = g_strdup_printf("string(/domain/devices/graphics[@type='%s']/@listen)", type);
xpath = g_strdup_printf("string(/domain/devices/graphics[@type='%s']/listen/@address)", type);
ghost = virt_viewer_extract_xpath_string(xmldesc, xpath);
if (ghost == NULL) { /* try old xml format - listen attribute in the graphics node */
g_free(xpath);
xpath = g_strdup_printf("string(/domain/devices/graphics[@type='%s']/@listen)", type);
ghost = virt_viewer_extract_xpath_string(xmldesc, xpath);
}
} else {
xpath = g_strdup_printf("string(/domain/devices/graphics[@type='%s']/@socket)", type);
xpath = g_strdup_printf("string(/domain/devices/graphics[@type='%s']/listen/@socket)", type);
unixsock = virt_viewer_extract_xpath_string(xmldesc, xpath);
if (unixsock == NULL) { /* try old xml format - socket attribute in the graphics node */
g_free(xpath);
xpath = g_strdup_printf("string(/domain/devices/graphics[@type='%s']/@socket)", type);
unixsock = virt_viewer_extract_xpath_string(xmldesc, xpath);
}
}
if (ghost && gport) {