qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>, qemu-devel@nongnu.org
Cc: Jan Kiszka <jan.kiszka@siemens.com>,
	Jason Wang <jasowang@redhat.com>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: Re: [Qemu-devel] [PATCH for-3.2 04/13] slirp: use a dedicated field for chardev pointer
Date: Thu, 15 Nov 2018 14:13:27 +0100	[thread overview]
Message-ID: <80982de0-f822-bfe3-0a08-772cad8254ac@redhat.com> (raw)
In-Reply-To: <20181110134548.14741-5-marcandre.lureau@redhat.com>

On 10/11/2018 14:45, Marc-André Lureau wrote:
> Let's not mix command line and chardev pointers.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>

This would probably be a good place to implement the suggestion I have
just sent.

Paolo

> ---
>  slirp/libslirp.h |  2 +-
>  slirp/misc.h     |  4 ++--
>  net/slirp.c      |  8 ++++----
>  slirp/misc.c     | 11 +++++++----
>  slirp/slirp.c    |  5 +++--
>  slirp/tcp_subr.c |  2 +-
>  6 files changed, 18 insertions(+), 14 deletions(-)
> 
> diff --git a/slirp/libslirp.h b/slirp/libslirp.h
> index 52dbb9feb5..3e88dbaa01 100644
> --- a/slirp/libslirp.h
> +++ b/slirp/libslirp.h
> @@ -35,7 +35,7 @@ int slirp_add_hostfwd(Slirp *slirp, int is_udp,
>                        struct in_addr guest_addr, int guest_port);
>  int slirp_remove_hostfwd(Slirp *slirp, int is_udp,
>                           struct in_addr host_addr, int host_port);
> -int slirp_add_exec(Slirp *slirp, int do_pty, const void *args,
> +int slirp_add_exec(Slirp *slirp, void *chardev, const char *cmdline,
>                     struct in_addr *guest_addr, int guest_port);
>  
>  void slirp_connection_info(Slirp *slirp, Monitor *mon);
> diff --git a/slirp/misc.h b/slirp/misc.h
> index 1f8d11def6..64ca88c3b7 100644
> --- a/slirp/misc.h
> +++ b/slirp/misc.h
> @@ -9,7 +9,7 @@
>  #define MISC_H
>  
>  struct ex_list {
> -	int ex_chardev;
> +	void *ex_chardev;
>  	struct in_addr ex_addr;		/* Server address */
>  	int ex_fport;                   /* Port to telnet to */
>  	const char *ex_exec;            /* Command line of what to exec */
> @@ -52,7 +52,7 @@ struct slirp_quehead {
>  
>  void slirp_insque(void *, void *);
>  void slirp_remque(void *);
> -int add_exec(struct ex_list **, int, char *, struct in_addr, int);
> +int add_exec(struct ex_list **, void *, const char *, struct in_addr, int);
>  int fork_exec(struct socket *so, const char *ex);
>  
>  #endif
> diff --git a/net/slirp.c b/net/slirp.c
> index 1dbd34a9da..0bb12567fe 100644
> --- a/net/slirp.c
> +++ b/net/slirp.c
> @@ -709,8 +709,8 @@ static int slirp_smb(SlirpState* s, const char *exported_dir,
>               CONFIG_SMBD_COMMAND, s->smb_dir, smb_conf);
>      g_free(smb_conf);
>  
> -    if (slirp_add_exec(s->slirp, 0, smb_cmdline, &vserver_addr, 139) < 0 ||
> -        slirp_add_exec(s->slirp, 0, smb_cmdline, &vserver_addr, 445) < 0) {
> +    if (slirp_add_exec(s->slirp, NULL, smb_cmdline, &vserver_addr, 139) < 0 ||
> +        slirp_add_exec(s->slirp, NULL, smb_cmdline, &vserver_addr, 445) < 0) {
>          slirp_smb_cleanup(s);
>          g_free(smb_cmdline);
>          error_setg(errp, "Conflicting/invalid smbserver address");
> @@ -774,7 +774,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp)
>      snprintf(buf, sizeof(buf), "guestfwd.tcp.%d", port);
>  
>      if ((strlen(p) > 4) && !strncmp(p, "cmd:", 4)) {
> -        if (slirp_add_exec(s->slirp, 0, &p[4], &server, port) < 0) {
> +        if (slirp_add_exec(s->slirp, NULL, &p[4], &server, port) < 0) {
>              error_setg(errp, "Conflicting/invalid host:port in guest "
>                         "forwarding rule '%s'", config_str);
>              return -1;
> @@ -801,7 +801,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str, Error **errp)
>              return -1;
>          }
>  
> -        if (slirp_add_exec(s->slirp, 3, &fwd->hd, &server, port) < 0) {
> +        if (slirp_add_exec(s->slirp, &fwd->hd, NULL, &server, port) < 0) {
>              error_setg(errp, "Conflicting/invalid host:port in guest "
>                         "forwarding rule '%s'", config_str);
>              g_free(fwd);
> diff --git a/slirp/misc.c b/slirp/misc.c
> index aa3c4b9771..1e9415e729 100644
> --- a/slirp/misc.c
> +++ b/slirp/misc.c
> @@ -37,7 +37,7 @@ remque(void *a)
>    element->qh_rlink = NULL;
>  }
>  
> -int add_exec(struct ex_list **ex_ptr, int do_pty, char *exec,
> +int add_exec(struct ex_list **ex_ptr, void *chardev, const char *cmdline,
>               struct in_addr addr, int port)
>  {
>  	struct ex_list *tmp_ptr;
> @@ -50,11 +50,14 @@ int add_exec(struct ex_list **ex_ptr, int do_pty, char *exec,
>  	}
>  
>  	tmp_ptr = *ex_ptr;
> -	*ex_ptr = g_new(struct ex_list, 1);
> +	*ex_ptr = g_new0(struct ex_list, 1);
>  	(*ex_ptr)->ex_fport = port;
>  	(*ex_ptr)->ex_addr = addr;
> -	(*ex_ptr)->ex_chardev = do_pty == 3;
> -	(*ex_ptr)->ex_exec = (do_pty == 3) ? exec : g_strdup(exec);
> +	if (chardev) {
> +		(*ex_ptr)->ex_chardev = chardev;
> +	} else {
> +		(*ex_ptr)->ex_exec = g_strdup(cmdline);
> +	}
>  	(*ex_ptr)->ex_next = tmp_ptr;
>  	return 0;
>  }
> diff --git a/slirp/slirp.c b/slirp/slirp.c
> index eb468facb1..58d1ef64e9 100644
> --- a/slirp/slirp.c
> +++ b/slirp/slirp.c
> @@ -1068,7 +1068,7 @@ int slirp_add_hostfwd(Slirp *slirp, int is_udp, struct in_addr host_addr,
>      return 0;
>  }
>  
> -int slirp_add_exec(Slirp *slirp, int do_pty, const void *args,
> +int slirp_add_exec(Slirp *slirp, void *chardev, const char *cmdline,
>                     struct in_addr *guest_addr, int guest_port)
>  {
>      if (!guest_addr->s_addr) {
> @@ -1081,7 +1081,8 @@ int slirp_add_exec(Slirp *slirp, int do_pty, const void *args,
>          guest_addr->s_addr == slirp->vnameserver_addr.s_addr) {
>          return -1;
>      }
> -    return add_exec(&slirp->exec_list, do_pty, (char *)args, *guest_addr,
> +
> +    return add_exec(&slirp->exec_list, chardev, cmdline, *guest_addr,
>                      htons(guest_port));
>  }
>  
> diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c
> index c534b0224b..e0bf7ad070 100644
> --- a/slirp/tcp_subr.c
> +++ b/slirp/tcp_subr.c
> @@ -967,7 +967,7 @@ int tcp_ctl(struct socket *so)
>                  so->so_faddr.s_addr == ex_ptr->ex_addr.s_addr) {
>                  if (ex_ptr->ex_chardev) {
>                      so->s = -1;
> -                    so->extra = (void *)ex_ptr->ex_exec;
> +                    so->extra = ex_ptr->ex_chardev;
>                      return 1;
>                  }
>                  DEBUG_MISC((dfd, " executing %s\n", ex_ptr->ex_exec));
> 

  parent reply	other threads:[~2018-11-15 13:13 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-10 13:45 [Qemu-devel] [PATCH for-3.2 00/13] slirp: cleanups Marc-André Lureau
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 01/13] slirp: associate slirp_output callback with the Slirp context Marc-André Lureau
2018-11-10 14:11   ` Samuel Thibault
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 02/13] slirp: remove do_pty from fork_exec() Marc-André Lureau
2018-11-10 14:21   ` Samuel Thibault
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 03/13] slirp: replace ex_pty with ex_chardev Marc-André Lureau
2018-11-10 14:26   ` Samuel Thibault
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 04/13] slirp: use a dedicated field for chardev pointer Marc-André Lureau
2018-11-10 14:28   ` Samuel Thibault
2018-11-15 13:13   ` Paolo Bonzini [this message]
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 05/13] slirp: remove unused EMU_RSH Marc-André Lureau
2018-11-10 14:30   ` Samuel Thibault
2018-11-15 13:15   ` Paolo Bonzini
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 06/13] slirp: rename /extra/chardev Marc-André Lureau
2018-11-10 14:30   ` Samuel Thibault
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 07/13] slirp: move internal function declarations Marc-André Lureau
2018-11-10 14:31   ` Samuel Thibault
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 08/13] slirp: remove Monitor dependency, return a string for info Marc-André Lureau
2018-11-10 14:35   ` Samuel Thibault
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 09/13] slirp: fix slirp_add_exec() leaks Marc-André Lureau
2018-11-10 14:37   ` Samuel Thibault
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 10/13] slirp: improve subprocess socket creation Marc-André Lureau
2018-11-10 13:53   ` Samuel Thibault
2018-11-10 14:04     ` Peter Maydell
2018-11-10 14:07       ` Samuel Thibault
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 11/13] slirp: replace the poor-man string split with g_strsplit() Marc-André Lureau
2018-11-10 14:42   ` Samuel Thibault
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 12/13] glib-compat: add g_spawn_async_with_fds() fallback Marc-André Lureau
2018-11-10 13:45 ` [Qemu-devel] [PATCH for-3.2 13/13] slirp: simplify fork_exec() Marc-André Lureau
2018-11-10 13:54   ` Samuel Thibault
2018-11-10 20:19 ` [Qemu-devel] [PATCH for-3.2 00/13] slirp: cleanups no-reply
2018-11-10 20:48 ` no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=80982de0-f822-bfe3-0a08-772cad8254ac@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jasowang@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=samuel.thibault@ens-lyon.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).