Hi everyone: I'm kind of new to IPv6, and I'm enhancing a client/server application to support it. It's a simple application from the addressing point of view, but running the server in a dual stack environment adds some complexity. Essentially, the server needs to be availble to both IPv6 and IPv4 clients. It seems that binding to the INADDR6_ANY address would be a good thing to do, but this works differetnly on different OS's.
I have found that Solaris allows bind() with socket using AF_INET6, INADDR6_ANY, and that connections from IPv6 and IPv4 clients reach the server and can be accepted. This is accomplished using only on passive socket. Does this make sense? It was a tiny surprize (AF_INET6 was clearly specified, and AF_INET was not), but from a migration and interoperability point of view, it's a good thing. However, the same behavior is not true when the server is running on, e.g., AIX or WIN2K. for these OSs, only IPv6 clients can connect to a server who called bind with the same family and address. Here's the main question: - should it work consistently as a definition of the protocol: bind(socket,sockaddr,len) where the socket is AF_INET6 and the IP address is INADDR6_ANY. - server binds as described and clients connect from IP4 or IP6 families. - Are there some OSs that won't allow this? On these do I have to listen on multiple sockets in different families, callling select() and then accept()? Any shared experience would be helpful. I'm supporting Solaris, AIX, HP-UX, Tru64, WIN2K, Linux various kernels, and some other oddball OS's. thanks for any information. Dave McLellan --Consulting Software Engineer - SPEA Engineering EMC Corporation 228 South St. Mail Stop: 228 LL/AA-24 Hopkinton, MA 01748 USA +1-508-249-1257 F: +1-508-497-8030 [EMAIL PROTECTED] --------------------------------------------------------------------- The IPv6 Users Mailing List Unsubscribe by sending "unsubscribe users" to [EMAIL PROTECTED]
