[libvirt] [PATCH 10/10] Convert guestfwd to -device, and add -sdl explicit args

Daniel Veillard veillard at redhat.com
Thu Dec 17 09:21:21 UTC 2009


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 at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list