From: Pavel Hrdina Date: Wed, 18 May 2016 11:27:28 +0000 (+0200) Subject: qemu_process: separate graphics socket and address generation X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=0f6db3a44df4f4220367e8e958f5bb726e5a1eef;p=libvirt.git qemu_process: separate graphics socket and address generation Signed-off-by: Pavel Hrdina --- diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index fb8df6aeef..50a6f09221 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4017,6 +4017,62 @@ qemuProcessGraphicsSetupNetworkAddress(virDomainGraphicsListenDefPtr glisten, } +static int +qemuProcessGraphicsSetupListen(virQEMUDriverConfigPtr cfg, + virDomainGraphicsDefPtr graphics) +{ + char *listenAddr = NULL; + size_t i; + + switch (graphics->type) { + case VIR_DOMAIN_GRAPHICS_TYPE_VNC: + listenAddr = cfg->vncListen; + break; + + case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: + listenAddr = cfg->spiceListen; + break; + + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + break; + } + + for (i = 0; i < graphics->nListens; i++) { + virDomainGraphicsListenDefPtr glisten = &graphics->listens[i]; + + switch (glisten->type) { + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS: + if (glisten->address || !listenAddr) + continue; + + if (VIR_STRDUP(glisten->address, listenAddr) < 0) + return -1; + + glisten->fromConfig = true; + break; + + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK: + if (glisten->address || !listenAddr) + continue; + + if (qemuProcessGraphicsSetupNetworkAddress(glisten, + listenAddr) < 0) + return -1; + break; + + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: + case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: + break; + } + } + + return 0; +} + + static int qemuProcessSetupGraphics(virQEMUDriverPtr driver, virDomainObjPtr vm, @@ -4024,7 +4080,7 @@ qemuProcessSetupGraphics(virQEMUDriverPtr driver, { virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); bool allocate = !(flags & VIR_QEMU_PROCESS_START_PRETEND); - size_t i, j; + size_t i; int ret = -1; if (allocate && qemuProcessGraphicsReservePorts(driver, vm) < 0) @@ -4032,21 +4088,16 @@ qemuProcessSetupGraphics(virQEMUDriverPtr driver, for (i = 0; i < vm->def->ngraphics; ++i) { virDomainGraphicsDefPtr graphics = vm->def->graphics[i]; - char *listenAddr = NULL; switch (graphics->type) { case VIR_DOMAIN_GRAPHICS_TYPE_VNC: if (qemuProcessVNCAllocatePorts(driver, graphics, allocate) < 0) goto cleanup; - - listenAddr = cfg->vncListen; break; case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: if (qemuProcessSPICEAllocatePorts(driver, cfg, graphics, allocate) < 0) goto cleanup; - - listenAddr = cfg->spiceListen; break; case VIR_DOMAIN_GRAPHICS_TYPE_SDL: @@ -4056,34 +4107,8 @@ qemuProcessSetupGraphics(virQEMUDriverPtr driver, break; } - for (j = 0; j < graphics->nListens; j++) { - virDomainGraphicsListenDefPtr glisten = &graphics->listens[j]; - - switch (glisten->type) { - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS: - if (glisten->address || !listenAddr) - continue; - - if (VIR_STRDUP(glisten->address, listenAddr) < 0) - goto cleanup; - - glisten->fromConfig = true; - break; - - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK: - if (glisten->address || !listenAddr) - continue; - - if (qemuProcessGraphicsSetupNetworkAddress(glisten, - listenAddr) < 0) - goto cleanup; - break; - - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE: - case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST: - break; - } - } + if (qemuProcessGraphicsSetupListen(cfg, graphics) < 0) + goto cleanup; } ret = 0;