�Hola!

> >Deprecate IPV6_V6ONLY, add IPV6_ACCEPTV4MAPPED option

> >   Then the IPv6 sockets would have to be explicitly allowed to accept
> >   IPv4 connections. So the programs that use the IPv6 centric way have
> >   to be modified a bit, but the buggy implementations and the unworkable
> >   one could be corrected without losing features. Just making
> >   IPV6_V6ONLY default to on would have the same results.

>       I really love to see this happen (polarity change is enough).
>       also, if IPv4 mapped address support becomes optional (explicitly)
>       to OS implementers it would be much better.

>       However, we need to be careful - after looking into IPV6_V6ONLY (or
>       IPV6_ACCEPTV4MAPPED) more closer, I came to realize some mess in
>       setsockopt(2) behavior.

>       for example:
>       - A issues bind(:: port 80).  as IPV6_V6ONLY is turned on, it grabs
>         IPv6 traffic only.
>       - B issues bind(0.0.0.0 port 80).  it grabs IPv4 traffic only.
>       - now, turn off IPV6_V6ONLY on A.  what should happen?
>         (1) check if there's anyone listening to 0.0.0.0 port 80.  since
>         there is B, the setsockopt should fail.
>         (2) doesn't matter.  if there's B, IPv4 traffic goes into B as
>         B gives better match than A to any IPv4 traffic.
>         btw, there's no spec talks about how traffic should be routed
>         to which socket!
 
>       there are A LOT of combinations we need to think about.

My opinion on this is that IPV6_V6ONLY should be allowed to change only if
no bind or connect has been called on that socket.
 
> >More magic to getaddrinfo

> >   Take the Linux approach as the good one (it's the only compliant and
> >   non buggy -again, talking just about the issue on topic, i won't judge
> >   the general buggyness of any stack here), add a bit more (yet more!)
> >   of magic to getaddrinfo so it only returns the INET wildcard sockaddr
> >   when the kernel has no support for IPv6, and then the buggy stacks
> >   could be corrected with no loss of features and the unworkable one
> >   would get workable.

>       please clarify.  are you suggesting that, for getaddrinfo(3) AI_PASSIVE
>       case:
>       - on platforms that makes :: and 0.0.0.0 conflict on bind(2),
>         dual stack kernel config: getaddrinfo(3) returns :: only.
>         IPv6 only kernel config: getaddrinfo(3) returns :: only.
>         IPv4 only kernel config: getaddrinfo(3) returns 0.0.0.0 only.
>         this case includes linux.
>       - on platforms that makes :: and 0.0.0.0 do not conflict on bind(2),
>         dual stack kernel config: getaddrinfo(3) returns :: and 0.0.0.0.
>         IPv6 only kernel config: getaddrinfo(3) returns :: only.
>         IPv4 only kernel config: getaddrinfo(3) returns 0.0.0.0 only.
>         this case includes OpenBSD, NetBSD, FreeBSD.

That's exactly what I was talking about. It's for me the least desired of
the proposed solutions, but it's enough for my purposes.

> itojun

                                        HoraPe
---
Horacio J. Pe�a
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to