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));
>
next prev 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).