From 99370101de9f764635be6bff85c69f51cdd6e477 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Fri, 11 May 2007 14:21:28 +0000 Subject: [PATCH] Ignore old style vnc config on xen 3.0.5 --- ChangeLog | 5 ++++ src/xend_internal.c | 57 ++++++++++++++++++++++++--------------------- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/ChangeLog b/ChangeLog index 737a23138c..015cf49199 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu May 11 10:20:00 EST 2007 Daniel P. Berrange + + * src/xend_internal.c: Ignore old style VNC config for HVM + guests on Xen 3.0.5 or later + Thu May 11 09:34:00 EST 2007 Daniel P. Berrange * libvirt.spec.in: Added dep on dnsmasq diff --git a/src/xend_internal.c b/src/xend_internal.c index 49b28f6d3f..136b535de7 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -1689,35 +1689,38 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi } } - /* Graphics device (HVM <= 3.0.4, or PV <= 3.0.4) vnc config */ - tmp = sexpr_fmt_node(root, "domain/image/%s/vnc", hvm ? "hvm" : "linux"); - if (tmp != NULL) { - if (tmp[0] == '1') { - int port = xenStoreDomainGetVNCPort(conn, domid); - const char *listenAddr = sexpr_fmt_node(root, "domain/image/%s/vnclisten", hvm ? "hvm" : "linux"); - const char *keymap = sexpr_fmt_node(root, "domain/image/%s/keymap", hvm ? "hvm" : "linux"); - /* For Xen >= 3.0.3, don't generate a fixed port mapping - * because it will almost certainly be wrong ! Just leave - * it as -1 which lets caller see that the VNC server isn't - * present yet. Subsquent dumps of the XML will eventually - * find the port in XenStore once VNC server has started - */ - if (port == -1 && xendConfigVersion < 2) - port = 5900 + domid; - virBufferVSprintf(&buf, " \n", 3); + /* Graphics device (HVM <= 3.0.4, or PV <= 3.0.3) vnc config */ + if ((hvm && xendConfigVersion < 4) || + (!hvm && xendConfigVersion < 3)) { + tmp = sexpr_fmt_node(root, "domain/image/%s/vnc", hvm ? "hvm" : "linux"); + if (tmp != NULL) { + if (tmp[0] == '1') { + int port = xenStoreDomainGetVNCPort(conn, domid); + const char *listenAddr = sexpr_fmt_node(root, "domain/image/%s/vnclisten", hvm ? "hvm" : "linux"); + const char *keymap = sexpr_fmt_node(root, "domain/image/%s/keymap", hvm ? "hvm" : "linux"); + /* For Xen >= 3.0.3, don't generate a fixed port mapping + * because it will almost certainly be wrong ! Just leave + * it as -1 which lets caller see that the VNC server isn't + * present yet. Subsquent dumps of the XML will eventually + * find the port in XenStore once VNC server has started + */ + if (port == -1 && xendConfigVersion < 2) + port = 5900 + domid; + virBufferVSprintf(&buf, " \n", 3); + } } - } - /* Graphics device (HVM, or old (pre-3.0.4) style PV sdl config) */ - tmp = sexpr_fmt_node(root, "domain/image/%s/sdl", hvm ? "hvm" : "linux"); - if (tmp != NULL) { - if (tmp[0] == '1') - virBufferAdd(&buf, " \n", 27 ); + /* Graphics device (HVM, or old (pre-3.0.4) style PV sdl config) */ + tmp = sexpr_fmt_node(root, "domain/image/%s/sdl", hvm ? "hvm" : "linux"); + if (tmp != NULL) { + if (tmp[0] == '1') + virBufferAdd(&buf, " \n", 27 ); + } } tty = xenStoreDomainGetConsolePath(conn, domid);