On Mon, Jan 31, 2005 at 11:04:59AM -1000, Antonio Querubin wrote:
> IPv4-mapped addresses facilitate an important interoperability mechanism
> in the socket API (RFC 3493, section 3.7).  While it's probably not a good
> idea to transmit these addresses on the wire, I think the API still needs
> a way to represent IPv4 addresses in a way that preserves compatibility
> between IPv6 and IPv4 hosts.  Removal just makes transition all the more
> time-consuming and difficult for software developers.

Removal and formal deprecation would simplify life for software
developers. As it currently stands some platforms now make it
deliberately difficult (e.g. openbsd) to use this transition mechanism
and others impossible (Win32). 

Until recently some platforms (Linux for example) didn't support the
IPV6_V6ONLY socket option, at all, but a deprecation might speed up
transition to a single means of listening for packets. Currently the
logic is somewhat convoluted, see

 
http://svn.apache.org/viewcvs.cgi/apr/apr/trunk/network_io/unix/sockaddr.c?view=markup

For an impression of complexity of interoperability support right now.
Personally I like IPv4-mapped address sockets, but enough people havn't
been convinced and many have intractable positions regarding their
security. They are *never* going to form the basis of a useful
transition mechanism now, all software - if it's going to be in anyway
portable and useful - simply has to support IPV6_V6ONLY sockets
aswell, and include all of that logic.

We might aswell rid developers of the burden of having to cope with
mapped-address sockets aswell.

So:

        if has_v6only is true then
                listen(::)
                listen(0.0.0.0)
                use_[select|poll|kqueue|whatever]_loop()
        else
                listen(::)

just becomes:

        listen(::)
        listen(0.0.0.0)
        use_[select|poll|kqueue|whatever]_loop()

It may not look like much of a saving there, but it is definitely less
complication. In Apache httpd and apr, it would easily lead less than
half the ammount of code currently needed for dealing with IPv6.  Don't
forget there are other simplifications benefited, not using mapped
addresses means that developers don't have to be paranoid about mapping
::ffef:1.1.1.1 to an IPv4 container for checking ACL's, DNS and so on
(see apr_getnameinfo for the workarounds needed for more buggy platforms
in this regard).

Anyway, in summary, removal would in my opinion actually make transition
much easier for software developers, not harder. Don't let the
superficial ease of the mapped-address API fool you :)

-- 
Colm MacC�rthaigh                        Public Key: [EMAIL PROTECTED]

--------------------------------------------------------------------
IETF IPv6 working group mailing list
[email protected]
Administrative Requests: https://www1.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to