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.