On Fri, Jun 22, 2012 at 03:52:45PM +0200, Michal Privoznik wrote: > Currently, if domain's graphic has no listenAddr set we provide > the one from qemu.conf. However, we must make this transient to > not overwrite future changes to the config file. Moreover, we > have to store this into domain state XML so we remain consistent > on eventual config file edits. > --- > Since users will never see new 'driverListenAddress' attribute > I don't think update of RNG schema is necessary. > > src/conf/domain_conf.c | 14 ++++++++++++++ > src/conf/domain_conf.h | 6 ++++++ > src/qemu/qemu_command.c | 18 ++++++++++++++++-- > 3 files changed, 36 insertions(+), 2 deletions(-) This is a really wierd way to go about including the listen address. It can trivially be done without putting hacks like this into the XML code. >From 25273cfefec989d78ec867b6ff56e22f7317f82a Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" <berrange@xxxxxxxxxx> Date: Mon, 25 Jun 2012 12:50:52 +0100 Subject: [PATCH] Include the default listen address in the live guest XML If no 'listen' attribute or <listen> element is set in the guest XML, the default driver configured listen address is used. There is no way to client applications to determine what this address is though. When starting the guest, we should update the live XML to include this default listen address --- src/qemu/qemu_process.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 1df3637..c5140c3 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3429,6 +3429,27 @@ int qemuProcessStart(virConnectPtr conn, vm->def->graphics[0]->data.spice.tlsPort = tlsPort; } } + + if (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC || + vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { + virDomainGraphicsDefPtr graphics = vm->def->graphics[0]; + if (graphics->nListens == 0) { + if (VIR_EXPAND_N(graphics->listens, graphics->nListens, 1) < 0) { + virReportOOMError(); + goto cleanup; + } + graphics->listens[0].type = VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS; + if (vm->def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_VNC) + graphics->listens[0].address = strdup(driver->vncListen); + else + graphics->listens[0].address = strdup(driver->spiceListen); + if (!graphics->listens[0].address) { + VIR_SHRINK_N(graphics->listens, graphics->nListens, 1); + virReportOOMError(); + goto cleanup; + } + } + } } if (virFileMakePath(driver->logDir) < 0) { -- 1.7.10.2 Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list