On Fri, Mar 5, 2021 at 4:10 PM Samuel Thibault <samuel.thiba...@gnu.org> wrote:
> Doug Evans, le ven. 05 mars 2021 16:05:05 -0800, a ecrit: > > Given that the code is not supposed to be able to know brackets were > present > > (they're stripped off early on), what does the above mean w.r.t. the > guest? > > For the host we can have "" mean listen on both IPv4 and IPv6 > > (by default, absent extra options like ipv4=off). > > But what does a guest address of "" mean? > > IPv4? IPv6? Both? > > It cannot really be "both" since it'd need to know. > > The 0.0.0.0 address used to mean the dhcp-provided address, and we don't > have a way to know the ipv6 address used with the stateless selection, > so I would say that empty address would be just the dhcp-provided > address. Most probably the guest will pick it up anyway, and guests > usually listen the same on ipv4 and ipv6, so I'd say empty most probably > means the user wants to just connect to ipv4 (whatever protocol was used > to connect to the host). > I realize IPv6 obviates the need for a stateful DHCPv6 server. Alas setting the hostfwd on the command line is *nice*, but it is currently *impossible* for IPv6: many system's macaddrs are random, and their IPv6 address is (at least often) derived from their macaddr. Thus for those systems the hostfwds have to be set up after the guest has booted enough to announce its address, and then the user can obtain the address to pass to hostfwd_add either by logging in and running ifconfig or some such (which can't be done via ssh from the host with user-mode networking because the hostfwd doesn't exist yet), or querying the NDP table and hope it's there. [I'm probably missing a better alternative though, and just haven't come up with it yet. Is it possible for QEMU to lazily determine the guest's IPv6 address? I.e., postpone the ""->guest address mapping until it's needed and then, say, take the first entry in the NDP table? That feels a bit fragile: what if someone else gets the first entry in the NDP table? But is that any more fragile than assuming the first handed out DHCP address is to the guest? [<<-- Honest question, can we assume the first handed out DHCP address will necessarily be the guest?] Anyways, If we eventually want a way to say "take this place-holder address and map it to the guest's IPv6 address" and follow the current spec, the preferable syntax would be ",ipv4" or ",ipv6" (fortunately that works - using ",ipv6=off" or ",ipv4=off" is pretty clumsy). And then we'll have to of course flag ",ipv4=off,ipv6=off" and ",ipv4=on,ipv6=on" as errors. But that would mean the defaults for the guest would have to be different than for the host. E.g., host: ",ipv4" means both, whereas guest: ",ipv4" (ideally) means ipv4 (since both is meaningless)