On Tue, Dec 05, 2006 at 05:16:54PM -0500, Daniel Veillard wrote:
On Tue, Dec 05, 2006 at 07:57:33PM +0000, Daniel P. Berrange wrote:
> The paravirt framebuffer patches for Xen finally got merged into upstream
> xen-devel. In doing so, however, the syntax of the SEXPR for configuring
> them changed completely. The existing framebuffer suppoirt in libvirt thus
> only works with the 3.0.3 tree + PVFB patches. For 3.0.4 we need to work
> with the new scheme. Fortunately, in 3.0.4 the xend_config_version flag
> is bumped from 2 -> 3, so we have an easy value to hook off.
>
> The attached patch thus adds support for parsing an SEXPR looking like
>
> (device
> (vfb
> (vncunused 1)
> (vnclisten 127.0.0.1)
> (vncpasswd 123456)
> (type vnc)
> )
> )
>
> And generating the <graphics type='vnc' port='5903'/> XML tag
to match.
> Index: src/xend_internal.c
> ===================================================================
> RCS file: /data/cvs/libvirt/src/xend_internal.c,v
> retrieving revision 1.78
> diff -u -r1.78 xend_internal.c
> --- src/xend_internal.c 22 Nov 2006 17:48:29 -0000 1.78
> +++ src/xend_internal.c 5 Dec 2006 20:47:19 -0000
> @@ -1736,6 +1736,19 @@
> tmp2);
>
> virBufferAdd(&buf, " </interface>\n", 17);
> + } else if (!hvm &&
> + sexpr_lookup(node, "device/vfb")) {
I assume we don't need to check here for (xendConfigVersion >= 3) because
that construct positively never happened before.
Yeah, and in fact in RHEL / Fedora we explicitly don't want the version
check, because we're planning to backport the new style PVFB config to
the Xen 3.0.3 build we have.
> + /* New style graphics config for PV guests only in
3.0.4 */
> + tmp = sexpr_node(node, "device/vfb/type");
> +
> + if (tmp && !strcmp(tmp, "sdl")) {
> + virBufferAdd(&buf, " <graphics
type='sdl'/>\n", 27);
> + } else if (tmp && !strcmp(tmp, "vnc")) {
> + int port = xenStoreDomainGetVNCPort(conn, domid);
> + if (port == -1)
> + port = 5900 + domid;
> + virBufferVSprintf(&buf, " <graphics
type='vnc' port='%d'/>\n", port);
> + }
Obviously the SEXPR contains more data, but the only one we used to export
is the port number (which we have to extract in different way), do we want to
make those extra informations about the IP listening and password part of
the dumped XML ? I guess the answer is no because the XML is provided to
non-root users via the proxy and this is a security information leak, right ?
Definitely don't want to include the password. We should add the vnclisten
data there though at some point in future - if only because it'll make it
easier for apps to sanity check. Adding the vnclisten data isn't a data leak
because you can already trivially see if with 'netstat'.
> - tmp = sexpr_fmt_node(root, "domain/image/%s/sdl",
hvm ? "hvm" : "linux");
> - if (tmp != NULL) {
> - if (tmp[0] == '1')
> - virBufferAdd(&buf, " <graphics
type='sdl'/>\n", 27 );
> + /* Graphics device (HVM, or old (pre-3.0.4) style PV sdl config) */
> + if (hvm || xendConfigVersion < 3){
> + tmp = sexpr_fmt_node(root, "domain/image/%s/sdl", hvm ?
"hvm" : "linux");
> + if (tmp != NULL) {
> + if (tmp[0] == '1')
> + virBufferAdd(&buf, " <graphics
type='sdl'/>\n", 27 );
> + }
> }
Could we potentially have both sdl and vnc ? I'm wondering why this need to
be limited it xendConfigVersion < 3 ...
I guess I could simply leave out that chunk /change - since that old style
config for PVFB simply won't ever appear in XenD SEXPR from 3.0.4 onwards.
Regards,
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|