�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]
--------------------------------------------------------------------