
On Tue, Dec 15, 2009 at 03:14:50PM +0000, Daniel P. Berrange wrote:
The old syntax was
-chardev SOMECONFIG -nic user,guestfwd=tcp:IP:PORT-chardev:CHARDEV
The new syntax is
-chardev SOMECONFIG -netdev user,guestfwd=tcp:IP:PORT,chardev=CHARDEV --- src/qemu/qemu_conf.c | 41 ++++++++++++++++++++++++++++++++--------- src/qemu/qemu_conf.h | 1 + 2 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index f8c6ae6..3d1cafa 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -911,6 +911,8 @@ static unsigned int qemudComputeCmdFlags(const char *help, flags |= QEMUD_CMD_FLAG_CHARDEV; if (strstr(help, "-device")) flags |= QEMUD_CMD_FLAG_DEVICE; + if (strstr(help, "-sdl")) + flags |= QEMUD_CMD_FLAG_SDL;
if (version >= 9000) flags |= QEMUD_CMD_FLAG_VNC_COLON; @@ -2576,18 +2578,33 @@ int qemudBuildCommandLine(virConnectPtr conn, const char *addr = virSocketFormatAddr(channel->target.addr); int port = virSocketGetPort(channel->target.addr);
- virBufferVSprintf(&buf, "user,guestfwd=tcp:%s:%i-chardev:%s", - addr, port, id); + if (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE) { + ADD_ARG_LIT("-netdev"); + virBufferVSprintf(&buf, "user,guestfwd=tcp:%s:%i,chardev=%s", + addr, port, id);
- VIR_FREE(addr); + VIR_FREE(addr);
- if (virBufferError(&buf)) { - virBufferFreeAndReset(&buf); - goto no_memory; - } + if (virBufferError(&buf)) { + virBufferFreeAndReset(&buf); + goto no_memory; + }
- ADD_ARG_LIT("-net"); - ADD_ARG(virBufferContentAndReset(&buf)); + ADD_ARG(virBufferContentAndReset(&buf)); + } else { + ADD_ARG_LIT("-net"); + virBufferVSprintf(&buf, "user,guestfwd=tcp:%s:%i-chardev:%s", + addr, port, id); + + VIR_FREE(addr); + + if (virBufferError(&buf)) { + virBufferFreeAndReset(&buf); + goto no_memory; + } + + ADD_ARG(virBufferContentAndReset(&buf)); + } } }
@@ -2696,6 +2713,12 @@ int qemudBuildCommandLine(virConnectPtr conn, */ ADD_ENV_COPY("QEMU_AUDIO_DRV"); ADD_ENV_COPY("SDL_AUDIODRIVER"); + + /* New QEMU has this flag to let us explicitly ask for + * SDL graphics. This is better than relying on the + * default, since the default changes :-( */ + if (qemuCmdFlags & QEMUD_CMD_FLAG_SDL) + ADD_ARG_LIT("-sdl"); }
if (def->nvideos) { diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 840b749..62f62e5 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -77,6 +77,7 @@ enum qemud_cmd_flags { QEMUD_CMD_FLAG_0_12 = (1 << 24), QEMUD_CMD_FLAG_MONITOR_JSON = QEMUD_CMD_FLAG_0_12, /* JSON mode for monitor */ QEMUD_CMD_FLAG_DEVICE = (1 << 25), /* Is the new -chardev arg available */ + QEMUD_CMD_FLAG_SDL = (1 << 26), /* Is the new -sdl arg available */ };
/* Main driver state */
ACK, the -sdl option handling feels like a separate change but fine Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/