diff -r 6bc29ebe053e -r 612c58965775 src/java.base/unix/native/libnio/ch/Net.c --- a/src/java.base/unix/native/libnio/ch/Net.c Sat Nov 09 09:13:04 2019 +0000 +++ b/src/java.base/unix/native/libnio/ch/Net.c Sat Nov 09 11:48:37 2019 +0000 @@ -158,24 +158,34 @@ JNIEXPORT jboolean JNICALL Java_sun_nio_ch_Net_canIPv6SocketJoinIPv4Group0(JNIEnv* env, jclass cl) { -#if defined(__APPLE__) || defined(_AIX) - /* for now IPv6 sockets cannot join IPv4 multicast groups */ +#if defined(__linux__) || defined(__APPLE__) || defined(__solaris__) + /* IPv6 sockets can join IPv4 multicast groups */ + return JNI_TRUE; +#else + /* IPv6 sockets cannot join IPv4 multicast groups */ return JNI_FALSE; -#else - return JNI_TRUE; #endif } JNIEXPORT jboolean JNICALL Java_sun_nio_ch_Net_canJoin6WithIPv4Group0(JNIEnv* env, jclass cl) { -#ifdef __solaris__ +#if defined(__APPLE__) || defined(__solaris__) + /* IPV6_ADD_MEMBERSHIP can be used to join IPv4 multicast groups */ return JNI_TRUE; #else + /* IPV6_ADD_MEMBERSHIP cannot be used to join IPv4 multicast groups */ return JNI_FALSE; #endif } +JNIEXPORT jboolean JNICALL +Java_sun_nio_ch_Net_canUseIPv6OptionsWithIPv4LocalAddress0(JNIEnv* env, jclass cl) +{ + /* IPV6_XXX socket options can be used on IPv6 sockets bound to IPv4 address */ + return JNI_TRUE; +} + JNIEXPORT jint JNICALL Java_sun_nio_ch_Net_socket0(JNIEnv *env, jclass cl, jboolean preferIPv6, jboolean stream, jboolean reuse, jboolean ignored)