src/java.base/windows/native/libnet/DualStackPlainSocketImpl.c

Print this page




  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));