Daniel P. Berrangé, le mer. 03 mars 2021 18:11:41 +0000, a ecrit:
> On Wed, Mar 03, 2021 at 10:06:50AM -0800, Doug Evans wrote:
> > On Sun, Feb 28, 2021 at 1:40 PM Samuel Thibault <samuel.thibault@gnu.org>
> > wrote:
> >
> > > > + Examples:
> > > > + hostfwd_add net0 tcp:127.0.0.1:10022-:22
> > > > + hostfwd_add net0 tcp:[::1]:10022-[fe80::1:2:3:4]:22
> > >
> > > Yep, that looks good to me.
> >
> > Daniel, you wanted me to use inet_parse().
> > Is the above syntax ok with you?
> > You must have had some expectation that at least some of
> > the various flags that inet_parse() recognizes would be needed here.
>
> It feels like the ,ipv4=on|off,ipv6=on|off flags are relevant here,
> especially in the empty address case. eg
>
> tcp::10022 - attempt to listen on both ipv4 + ipv6
> tcp::10022,ipv4=off - listen on default address, but only for ipv6
> tcp::10022,ipv6=off - listen on default address, but only for ipv4
>
> Basically this ends up bringing the hostfwd stuff into alignment with
> the way other backends deal with this
I'm fine with this yes, better have a coherent user interface.
Cool. Here's the current help text I have:
---snip---
#ifdef CONFIG_SLIRP
{
.name = "hostfwd_add",
.args_type = "arg1:s,arg2:s?",
.params = "[netdev_id] [tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport",
.help = "redirect TCP or UDP connections from host to guest (requires -net user)",
.cmd = hmp_hostfwd_add,
},
#endif
SRST
``hostfwd_add``
Redirect TCP or UDP connections from host to guest (requires -net user).
IPv6 addresses are wrapped in square bracke
ts, IPv4 addresses are not.
Examples:
hostfwd_add net0 tcp:127.0.0.1:10022-:22
hostfwd_add net0 tcp:[::1]:10022-[fe80::1:2:3:4]:22
Empty host addresses:
An empty address for the host, expressed as either "" or "[]", is
interpreted as listen at any address for both IPv4 and IPv6. To listen on
only IPv4 one can use "0.0.0.0". The equivalent IPv6 address, "[::]", is
interpreted as listen on both IPv4 and IPv6 addresses. To listen on only
IPv6 addresses, add ",ipv4=off" to the address. E.g.,
hostfwd_add net0 tcp::10022,ipv4=off-[fe80::1:2:3:4]:22
hostfwd_add net0 tcp:[]:10022,ipv4=off-[fe80::1:2:3:4]:22
hostfwd_add net0 tcp:[::]:10022,ipv4=off-[fe80::1:2:3:4]:22
And similarly for IPv4 only:
hostfwd_add net0 tcp::10022,ipv6=off-[fe80::1:2:3:4]:22
hostfwd_add net0 tcp:[]:10022,ipv6=off-[fe80::1:2:3:4]:22
Empty guest addresses:
An empty guest address for IPv4 is translated to the guest's address,
assuming that the guest is using DHCP to acquire its address.
Note that Libslirp currently only provides a "stateless" DHCPv6 server, a
consequence of which is that it cannot do the "addr-any" translation to the
guest address that is done for IPv4. In other words, the following is
currently not supported: hostfwd_add net0 tcp::10022-:22, the guest
address is required.
ERST
---snip---
Any corrections or suggestions?