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;