31 #define SET_BLOCKING 0 32 #define SET_NONBLOCKING 1 33 34 static jclass isa_class; /* java.net.InetSocketAddress */ 35 static jmethodID isa_ctorID; /* InetSocketAddress(InetAddress, int) */ 36 37 /* 38 * Class: java_net_DualStackPlainSocketImpl 39 * Method: initIDs 40 * Signature: ()V 41 */ 42 JNIEXPORT void JNICALL Java_java_net_DualStackPlainSocketImpl_initIDs 43 (JNIEnv *env, jclass clazz) { 44 45 jclass cls = (*env)->FindClass(env, "java/net/InetSocketAddress"); 46 CHECK_NULL(cls); 47 isa_class = (*env)->NewGlobalRef(env, cls); 48 isa_ctorID = (*env)->GetMethodID(env, cls, "<init>", 49 "(Ljava/net/InetAddress;I)V"); 50 51 // implement read timeout with select. 52 isRcvTimeoutSupported = 0; 53 } 54 55 /* 56 * Class: java_net_DualStackPlainSocketImpl 57 * Method: socket0 58 * Signature: (ZZ)I 59 */ 60 JNIEXPORT jint JNICALL Java_java_net_DualStackPlainSocketImpl_socket0 61 (JNIEnv *env, jclass clazz, jboolean stream, jboolean v6Only /*unused*/) { 62 int fd, rv, opt=0; 63 64 fd = NET_Socket(AF_INET6, (stream ? SOCK_STREAM : SOCK_DGRAM), 0); 65 if (fd == INVALID_SOCKET) { 66 NET_ThrowNew(env, WSAGetLastError(), "create"); 67 return -1; 68 } 69 70 rv = setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &opt, sizeof(opt)); | 31 #define SET_BLOCKING 0 32 #define SET_NONBLOCKING 1 33 34 static jclass isa_class; /* java.net.InetSocketAddress */ 35 static jmethodID isa_ctorID; /* InetSocketAddress(InetAddress, int) */ 36 37 /* 38 * Class: java_net_DualStackPlainSocketImpl 39 * Method: initIDs 40 * Signature: ()V 41 */ 42 JNIEXPORT void JNICALL Java_java_net_DualStackPlainSocketImpl_initIDs 43 (JNIEnv *env, jclass clazz) { 44 45 jclass cls = (*env)->FindClass(env, "java/net/InetSocketAddress"); 46 CHECK_NULL(cls); 47 isa_class = (*env)->NewGlobalRef(env, cls); 48 isa_ctorID = (*env)->GetMethodID(env, cls, "<init>", 49 "(Ljava/net/InetAddress;I)V"); 50 51 initInetAddressIDs(env); 52 53 // implement read timeout with select. 54 isRcvTimeoutSupported = 0; 55 } 56 57 /* 58 * Class: java_net_DualStackPlainSocketImpl 59 * Method: socket0 60 * Signature: (ZZ)I 61 */ 62 JNIEXPORT jint JNICALL Java_java_net_DualStackPlainSocketImpl_socket0 63 (JNIEnv *env, jclass clazz, jboolean stream, jboolean v6Only /*unused*/) { 64 int fd, rv, opt=0; 65 66 fd = NET_Socket(AF_INET6, (stream ? SOCK_STREAM : SOCK_DGRAM), 0); 67 if (fd == INVALID_SOCKET) { 68 NET_ThrowNew(env, WSAGetLastError(), "create"); 69 return -1; 70 } 71 72 rv = setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &opt, sizeof(opt)); |