src/solaris/native/sun/nio/ch/Net.c

Print this page
rev 8975 : 8031581: PPC64: Addons and fixes for AIX to pass the jdk regression tests

*** 101,116 **** --- 101,128 ---- #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP #endif /* IPV6_ADD_MEMBERSHIP */ + #if defined(_AIX) + + struct my_ip_mreq_source { + struct in_addr imr_multiaddr; + struct in_addr imr_sourceaddr; + struct in_addr imr_interface; + }; + + #else + struct my_ip_mreq_source { struct in_addr imr_multiaddr; struct in_addr imr_interface; struct in_addr imr_sourceaddr; }; + #endif /* _AIX */ + struct my_group_source_req { uint32_t gsr_interface; /* interface index */ struct sockaddr_storage gsr_group; /* group address */ struct sockaddr_storage gsr_source; /* source address */ };
*** 196,206 **** } JNIEXPORT jboolean JNICALL Java_sun_nio_ch_Net_canIPv6SocketJoinIPv4Group0(JNIEnv* env, jclass cl) { ! #ifdef MACOSX /* for now IPv6 sockets cannot join IPv4 multicast groups */ return JNI_FALSE; #else return JNI_TRUE; #endif --- 208,218 ---- } JNIEXPORT jboolean JNICALL Java_sun_nio_ch_Net_canIPv6SocketJoinIPv4Group0(JNIEnv* env, jclass cl) { ! #if defined(MACOSX) || defined(_AIX) /* for now IPv6 sockets cannot join IPv4 multicast groups */ return JNI_FALSE; #else return JNI_TRUE; #endif
*** 733,748 **** --- 745,769 ---- JNIEXPORT jint JNICALL Java_sun_nio_ch_Net_poll(JNIEnv* env, jclass this, jobject fdo, jint events, jlong timeout) { struct pollfd pfd; int rv; + #ifdef _AIX + /* The hard coded event constants from Java do not match system values on AIX. */ + events = javaToNativeEvents(events); + #endif + pfd.fd = fdval(env, fdo); pfd.events = events; rv = poll(&pfd, 1, timeout); if (rv >= 0) { + #ifdef _AIX + return nativeToJavaEvents(pfd.revents); + #else return pfd.revents; + #endif } else if (errno == EINTR) { return IOS_INTERRUPTED; } else { handleSocketError(env, errno); return IOS_THROWN;