< prev index next >

src/java.base/unix/native/libnio/ch/InheritedChannel.c

Print this page

        

*** 35,45 **** #include "jni_util.h" #include "net_util.h" #include "sun_nio_ch_InheritedChannel.h" ! static int matchFamily(SOCKETADDRESS *sa) { return (sa->sa.sa_family == (ipv6_available() ? AF_INET6 : AF_INET)); } JNIEXPORT void JNICALL Java_sun_nio_ch_InheritedChannel_initIDs(JNIEnv *env, jclass cla) --- 35,45 ---- #include "jni_util.h" #include "net_util.h" #include "sun_nio_ch_InheritedChannel.h" ! static int matchFamilyInet(SOCKETADDRESS *sa) { return (sa->sa.sa_family == (ipv6_available() ? AF_INET6 : AF_INET)); } JNIEXPORT void JNICALL Java_sun_nio_ch_InheritedChannel_initIDs(JNIEnv *env, jclass cla)
*** 47,81 **** /* Initialize InetAddress IDs before later use of NET_XXX functions */ initInetAddressIDs(env); } JNIEXPORT jobject JNICALL ! Java_sun_nio_ch_InheritedChannel_peerAddress0(JNIEnv *env, jclass cla, jint fd) { SOCKETADDRESS sa; socklen_t len = sizeof(SOCKETADDRESS); jobject remote_ia = NULL; jint remote_port; if (getpeername(fd, &sa.sa, &len) == 0) { ! if (matchFamily(&sa)) { remote_ia = NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port); } } return remote_ia; } JNIEXPORT jint JNICALL Java_sun_nio_ch_InheritedChannel_peerPort0(JNIEnv *env, jclass cla, jint fd) { SOCKETADDRESS sa; socklen_t len = sizeof(SOCKETADDRESS); jint remote_port = -1; ! if (getpeername(fd, &sa.sa, &len) == 0) { ! if (matchFamily(&sa)) { NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port); } } return remote_port; --- 47,96 ---- /* Initialize InetAddress IDs before later use of NET_XXX functions */ initInetAddressIDs(env); } JNIEXPORT jobject JNICALL ! Java_sun_nio_ch_InheritedChannel_peerAddressInet(JNIEnv *env, jclass cla, jint fd) { SOCKETADDRESS sa; socklen_t len = sizeof(SOCKETADDRESS); jobject remote_ia = NULL; jint remote_port; if (getpeername(fd, &sa.sa, &len) == 0) { ! if (matchFamilyInet(&sa)) { remote_ia = NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port); } } return remote_ia; } + JNIEXPORT jstring JNICALL + Java_sun_nio_ch_InheritedChannel_peerAddressUnix(JNIEnv *env, jclass cla, jint fd) + { + struct sockaddr_un sa; + socklen_t len = sizeof(struct sockaddr_un); + jobject remote_sa = NULL; + + if (getpeername(fd, (struct sockaddr *)&sa, &len) == 0) { + if (sa.sun_family == AF_UNIX) { + remote_sa = NET_SockaddrToUnixAddressString(env, &sa, len); + } + } + return remote_sa; + } + JNIEXPORT jint JNICALL Java_sun_nio_ch_InheritedChannel_peerPort0(JNIEnv *env, jclass cla, jint fd) { SOCKETADDRESS sa; socklen_t len = sizeof(SOCKETADDRESS); jint remote_port = -1; ! if (getpeername(fd, (struct sockaddr *)&sa.sa, &len) == 0) { ! if (matchFamilyInet(&sa)) { NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port); } } return remote_port;
< prev index next >