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