On Thu, May 5, 2022 at 10:20 AM Marc-André Lureau <marcandre.lur...@gmail.com> wrote: > > Hi > > On Thu, May 5, 2022 at 1:07 AM Paolo Bonzini <pbonz...@redhat.com> wrote: >> >> Replace slirp_init with slirp_new, so that a more recent cfg.version >> can be specified. > > > It was introduced in v4.1.0, but I don't see a minimum libslirp version check.
In fact 4.3.0 is needed for version 3 of the struct, so the following needs to be squashed: diff --git a/meson.build b/meson.build index 11876f5141..c902dfabd3 100644 --- a/meson.build +++ b/meson.build @@ -2638,7 +2638,7 @@ if have_system if slirp_opt in ['enabled', 'auto', 'system'] have_internal = fs.exists(meson.current_source_dir() / 'slirp/meson.build') slirp = dependency('slirp', kwargs: static_kwargs, - method: 'pkg-config', + method: 'pkg-config', version: '>=4.3.0', required: slirp_opt == 'system' or slirp_opt == 'enabled' and not have_internal) if slirp.found() Paolo > >> >> >> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >> --- >> net/slirp.c | 27 +++++++++++++++++++++------ >> 1 file changed, 21 insertions(+), 6 deletions(-) >> >> diff --git a/net/slirp.c b/net/slirp.c >> index f1e25d741f..b3a92d6e38 100644 >> --- a/net/slirp.c >> +++ b/net/slirp.c >> @@ -389,6 +389,7 @@ static int net_slirp_init(NetClientState *peer, const >> char *model, >> #if defined(CONFIG_SMBD_COMMAND) >> struct in_addr smbsrv = { .s_addr = 0 }; >> #endif >> + SlirpConfig cfg = { 0 }; >> NetClientState *nc; >> SlirpState *s; >> char buf[20]; >> @@ -577,12 +578,26 @@ static int net_slirp_init(NetClientState *peer, const >> char *model, >> >> s = DO_UPCAST(SlirpState, nc, nc); >> >> - s->slirp = slirp_init(restricted, ipv4, net, mask, host, >> - ipv6, ip6_prefix, vprefix6_len, ip6_host, >> - vhostname, tftp_server_name, >> - tftp_export, bootfile, dhcp, >> - dns, ip6_dns, dnssearch, vdomainname, >> - &slirp_cb, s); >> + cfg.version = 3; >> + cfg.restricted = restricted; >> + cfg.in_enabled = ipv4; >> + cfg.vnetwork = net; >> + cfg.vnetmask = mask; >> + cfg.vhost = host; >> + cfg.in6_enabled = ipv6; >> + cfg.vprefix_addr6 = ip6_prefix; >> + cfg.vprefix_len = vprefix6_len; >> + cfg.vhost6 = ip6_host; >> + cfg.vhostname = vhostname; >> + cfg.tftp_server_name = tftp_server_name; >> + cfg.tftp_path = tftp_export; >> + cfg.bootfile = bootfile; >> + cfg.vdhcp_start = dhcp; >> + cfg.vnameserver = dns; >> + cfg.vnameserver6 = ip6_dns; >> + cfg.vdnssearch = dnssearch; >> + cfg.vdomainname = vdomainname; >> + s->slirp = slirp_new(&cfg, &slirp_cb, s); >> QTAILQ_INSERT_TAIL(&slirp_stacks, s, entry); >> >> /* >> -- >> 2.35.1 >> >> > > > -- > Marc-André Lureau