On 27/01/2010 14:55, Alan Bateman wrote:
Christopher Hegarty - Sun Microsystems Ireland wrote:
Hi Alan, Michael,
Since we don't typically build on non-IPv6 systems, over a number of
years the net/nio code has not maintained clean non-IPv6 code. This
patch addresses that by excluding IPv6 specific code where AF_INET6 is
not defined.
6905552: libnet/nio portability issues
Webrev: http://cr.openjdk.java.net/~chegar/6905552/webrev.0/webrev/
-Chris.
This looks okay to me. One thing I don't understand is the change to the
getMTU method in src/solaris/native/java/net/NetworkInterface.c - it
looks like this will fail on Solaris if IPv6 is not enabled - do I have
this right? In the same place there the comment "Try wIth an ..." can
probably be used.
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?
Minor comment is that there are a few inconsistencies in the comments.
In some places it's #endif /* AF_INET6 */, others it is #endif //
AF_INET6, and no comments in the rest.
I'll make the comment consistent. I only added a comment in cases where
I thought it was not obvious what the endif was for.
Thanks,
-Chris.
-Alan.