[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 2/5] sockets: don't block IPv4 clients when l
From: |
Daniel P. Berrange |
Subject: |
Re: [Qemu-devel] [PATCH v2 2/5] sockets: don't block IPv4 clients when listening on "::" |
Date: |
Mon, 22 May 2017 16:34:38 +0100 |
User-agent: |
Mutt/1.8.0 (2017-02-23) |
On Mon, May 22, 2017 at 10:30:55AM -0500, Eric Blake wrote:
> On 05/19/2017 01:03 PM, Daniel P. Berrange wrote:
> > When inet_parse() parses the hostname, it is forcing the
> > has_ipv6 && ipv6 flags if the address contains a ":". This
> > means that if the user had set the ipv4=on flag, to try to
> > restrict the listener to just ipv4, an error would not have
> > been raised. eg
> >
> > -incoming tcp:[::]:9000,ipv4
> >
> > should have raised an error because listening for IPv4
> > on "::" is a non-sensical combination.
>
> If I understand correctly, the correct response (and post-patch
> behavior) is an error (mismatch between requesting IPv4-only usage while
> giving an IPv6 address), but the buggy response (pre-patch behavior) is
> that we ended up setting ipv6 in addition to the user-set ipv4 (because
> we found a ':'), and then end up listening on IPv6 after all contrary to
> the user's request.
Yes, with this patch you get this error:
qemu-system-x86_64: -incoming tcp:[::]:9000,ipv4: address resolution
failed for :::9000: Address family for hostname not supported
because it now (correctly) tries to resolve "::" as an IPv4 address
and fails (just like -chardev and -vnc already do)
>
>
> > With this removed,
> > we now call getaddrinfo() on "::" passing PF_INET and
> > so getaddrinfo reports an error about the hostname being
> > incompatible with the requested protocol.
> >
> > Likewise it is explicitly setting the has_ipv4 & ipv4
> > flags when the address contains only digits + '.'. This
> > has no ill-effect, but also has no benefit, so is removed.
> >
> > Signed-off-by: Daniel P. Berrange <address@hidden>
> > ---
> > util/qemu-sockets.c | 4 ----
> > 1 file changed, 4 deletions(-)
>
> Reviewed-by: Eric Blake <address@hidden>
>
> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc. +1-919-301-3266
> Virtualization: qemu.org | libvirt.org
>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
- [Qemu-devel] [PATCH v2 0/5] Fix handling of IPv4/IPv6 dual stack, Daniel P. Berrange, 2017/05/19
- [Qemu-devel] [PATCH v2 1/5] sockets: ensure we can bind to both ipv4 & ipv6 separately, Daniel P. Berrange, 2017/05/19
- [Qemu-devel] [PATCH v2 2/5] sockets: don't block IPv4 clients when listening on "::", Daniel P. Berrange, 2017/05/19
- [Qemu-devel] [PATCH v2 3/5] sockets: ensure we don't accept IPv4 clients when IPv4 is disabled, Daniel P. Berrange, 2017/05/19
- [Qemu-devel] [PATCH v2 4/5] io: preserve ipv4/ipv6 flags when resolving InetSocketAddress, Daniel P. Berrange, 2017/05/19
- [Qemu-devel] [PATCH v2 5/5] tests: add functional test validating ipv4/ipv6 address flag handling, Daniel P. Berrange, 2017/05/19