Christopher Hegarty - Sun Microsystems Ireland wrote:
:
What we found is that on Solaris if an interface has only IPv6 addresses assigned to it, then you need to use a socket created with AF_INET6 when querying the ioclt. By default, we always try to with an AF_INET socket first and on Solaris fall back to try with an AF_INET6 socket if that fails (see L1533 in the new file).

In the case that we are building without AF_INET6 defined it doesn't make sense to try with an AF_INET6 socket if the ioctl fails with AF_INET. Make sense? Is this what you were asking about?
That helps - I was mostly trying to understand what the behavior would be if we were compiled without IPv6 support but encountered a network interface that didn't have an IPv4 address plumbed. It looks like it will fail with an IOException with the error message from the ioctl. Now compare that with running today with java.net.preferIPv4Stack=true. I think today it will still create the IPv6 socket and return the MTU. It's probably not worth thinking about this as Solaris had had IPv6 support in its header files since at least Solaris 8 and it's highly unlikely someone where compile this without AF_INET6 being defined.

-Alan.

Reply via email to