8233435: (dc) DatagramChannel should allow IPv6 socket join IPv4 multicast groups (macOS, win)

Reviewed-by: dfuchs
This commit is contained in:
Alan Bateman 2019-11-09 11:48:37 +00:00
parent 690b960c8f
commit 090dc51a4e
6 changed files with 185 additions and 66 deletions

View file

@ -158,24 +158,34 @@ Java_sun_nio_ch_Net_isExclusiveBindAvailable(JNIEnv *env, jclass clazz) {
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 */
return JNI_FALSE;
#else
#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;
#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)