From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: qemu-devel@nongnu.org
Cc: jb-gnumlists@wisemo.com, thuth@redhat.com, jasowang@redhat.com,
"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: Re: [PATCH] net: print a more actionable error when slirp is not found
Date: Fri, 30 Sep 2022 21:47:29 +0200 [thread overview]
Message-ID: <2973900.g0HVWOepMQ@silver> (raw)
In-Reply-To: <20220929163237.1417215-1-marcandre.lureau@redhat.com>
On Donnerstag, 29. September 2022 18:32:37 CEST Marc-André Lureau wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> If slirp is not found during compile-time, and not manually disabled,
> print a friendly error message, as suggested in the "If your networking
> is failing after updating to the latest git version of QEMU..." thread
> by various people.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> meson.build | 4 ++++
> net/net.c | 19 +++++++++++++++++--
> 2 files changed, 21 insertions(+), 2 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 8dc661363f..4f69d7d0b4 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -657,6 +657,10 @@ if not get_option('slirp').auto() or have_system
> endif
> endif
>
> +if get_option('slirp').disabled()
> + config_host_data.set('CONFIG_SLIRP_DISABLED', true)
> +endif
> +
> vde = not_found
> if not get_option('vde').auto() or have_system or have_tools
> vde = cc.find_library('vdeplug', has_headers: ['libvdeplug.h'],
> diff --git a/net/net.c b/net/net.c
> index 2db160e063..e6072a5ddd 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -990,14 +990,29 @@ static int net_init_nic(const Netdev *netdev, const
> char *name, return idx;
> }
>
> +#if (defined(CONFIG_SLIRP) || !defined(CONFIG_SLIRP_DISABLED))
> +static int net_init_user(const Netdev *netdev, const char *name,
> + NetClientState *peer, Error **errp)
> +{
> +#ifdef CONFIG_SLIRP
> + return net_init_slirp(netdev, name, peer, errp);
> +#else
> + error_setg(errp,
> + "Type 'user' is not a supported netdev backend by this QEMU
> build " + "because the libslirp development files were not
> found during build " + "of QEMU.");
> +#endif
> + return -1;
> +}
> +#endif
I just tried this, but somehow it is not working for me. net_init_user() is
never called and therefore I don't get the error message. That should be
working if the user launched QEMU without any networking arg, right?
And still, I would find it better if there was also a clear build-time error
if there was no libslirp and slirp feature was not explicitly disabled.
>
> static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
> const Netdev *netdev,
> const char *name,
> NetClientState *peer, Error **errp) = {
> [NET_CLIENT_DRIVER_NIC] = net_init_nic,
> -#ifdef CONFIG_SLIRP
> - [NET_CLIENT_DRIVER_USER] = net_init_slirp,
> +#if (defined(CONFIG_SLIRP) || !defined(CONFIG_SLIRP_DISABLED))
> + [NET_CLIENT_DRIVER_USER] = net_init_user,
> #endif
> [NET_CLIENT_DRIVER_TAP] = net_init_tap,
> [NET_CLIENT_DRIVER_SOCKET] = net_init_socket,
next prev parent reply other threads:[~2022-09-30 19:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-29 16:32 [PATCH] net: print a more actionable error when slirp is not found marcandre.lureau
2022-09-30 19:47 ` Christian Schoenebeck [this message]
2022-10-02 13:49 ` Marc-André Lureau
2022-10-13 10:14 ` Jakob Bohm
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=2973900.g0HVWOepMQ@silver \
--to=qemu_oss@crudebyte.com \
--cc=jasowang@redhat.com \
--cc=jb-gnumlists@wisemo.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
/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).