I face the same problem and I would like to understand why introducing
bindv6only=1 to Debian, and how it effects current applications.

>From what I read in the discussion, I think there are 4 types if
applications here:

  A: a server creates two sockets, one binds to IPv4 address, and the
other binds to IPv6;
  B: a server creates one socket, binds to IPv4 address, and accepts
only IPv4 connection;
  C: a server creates one socket, binds to IPv6 address, and accepts
only IPv6 connection;
  D: a server creates one sockets, binds to ::, accepts both IPv4 and
IPv6 connections;

And sysctl parameter net.ipv6.bindv6only has no effect on type A and
type B servers, however it will effect type C and D servers.

When net.ipv6.bindv6only was set to 0, applications in type C must use
IPV6_V6ONLY to explicitly specify it only wants IPv6 connections. And
"many already do this".

So, this is not OK?

But, after net.ipv6.bindv6only was set to 1, applications in type D
must use IPV6_V6ONLY to explicitly specify it want both IPv4 and IPv6
connections. None of them need to do this before.

So this is OK?

Since in many other OSes, the applications in type C would not need to
do setsockopt IPV6_V6ONLY, we have to release many of them from
"already do so"? Or since applications in type D are so ill designed,
we have to modified them to use setsockopt explicitly in order to let
type C application use default net.ipv6.bindv6only value implicitly,
even when many of them already do setsockopt explicitly?

I just don't understand, what's the intention of this feature? All
application should use setsocketopt IPV6_V6ONLY explicitly? Or type C
applications should not exist, it should be modified to type A, no
matter what cost. Or "make the system behavior match the one of all
other operating systems"?

If the intention is the last one, how can it be achieved when some
OSes does not even support binding to both v4 and v6. No matter what
default value we choose to set net.ipv6.bindv6only, all 4 types of
applications can exists on Linux, but type C application cannot run on
OSes which do not support it. Isn't this a different behavior?

Linux is a major player in OS market, why should Linux or Debian Linux
change the default behavior to match others, not the other way around?
Which way creates more problem? By stating "many applications already
do so (setsockopt IPV6_V6ONLY)" in Linux, I think the answer is clear.
--
Vi veri veniversum vivus vici



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to