[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Default value of net.ipv6.bindv6only should revert to 0



On Mon, Apr 12, 2010 at 11:12:36AM -0700, Russ Allbery wrote:
> Salvo Tomaselli <tiposchi@tiscali.it> writes:
> > On Monday 12 April 2010 18:19:08 Marco d'Itri wrote:
> >> You keep missing the point. Let me try with shorter sentences, if you
> >> still do not get it maybe I can try a puppets show.

"Standards good.  BSD bug bad."
I hope that's short enough.

> > So we introduce bugs in kernel to workaround bugs in daemons?
> 
> The way to fix the bug in the daemon is to always use IPV6_V6ONLY in the
> networking code because no other way of handling listening sockets with a
> dual stack is even remotely sane.
> 
> Until the daemon is modified to either use IPV6_V6ONLY or to deal with
> IPv4-mapped addresses, it's going to be broken,

A daemon that's not modified to support anything but IPv4 uses the old style
interface.  If you support getaddrinfo() from start, you know about IPv6.

> > Open a bugreport _IF_ you can find any real daemon with this kind of
> > problem.
> 
> Just about every daemon I've ever seen had this problem in its original
> conversion to IPv6 support.  I've fixed it in all of my code by using
> IPV6_V6ONLY as soon as I became aware of its existence.

Instead of listening on a single socket, you need to change every single
daemon to include a select() loop.  That's explicitely allowed by all
relevant RFCs and by POSIX, so breaking that is quite a regression.

-- 
1KB		// Microsoft corollary to Hanlon's razor:
		//	Never attribute to stupidity what can be
		//	adequately explained by malice.


Reply to: