src/share/native/java/net/net_util.c

Print this page




  29 #include "net_util.h"
  30 
  31 int IPv6_supported() ;
  32 
  33 static int IPv6_available;
  34 
  35 JNIEXPORT jint JNICALL ipv6_available()
  36 {
  37     return IPv6_available ;
  38 }
  39 
  40 JNIEXPORT jint JNICALL
  41 JNI_OnLoad(JavaVM *vm, void *reserved)
  42 {
  43     JNIEnv *env;
  44     jclass iCls;
  45     jmethodID mid;
  46     jstring s;
  47     jint preferIPv4Stack;
  48 
  49     if ((*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_2) == JNI_OK) {
  50         if (JVM_InitializeSocketLibrary() < 0) {
  51             JNU_ThrowByName(env, "java/lang/UnsatisfiedLinkError",
  52                             "failed to initialize net library.");
  53             return JNI_VERSION_1_2;
  54         }
  55     }

  56     iCls = (*env)->FindClass(env, "java/lang/Boolean");
  57     CHECK_NULL_RETURN(iCls, JNI_VERSION_1_2);
  58     mid = (*env)->GetStaticMethodID(env, iCls, "getBoolean", "(Ljava/lang/String;)Z");
  59     CHECK_NULL_RETURN(mid, JNI_VERSION_1_2);
  60     s = (*env)->NewStringUTF(env, "java.net.preferIPv4Stack");
  61     CHECK_NULL_RETURN(s, JNI_VERSION_1_2);
  62     preferIPv4Stack = (*env)->CallStaticBooleanMethod(env, iCls, mid, s);
  63 
  64     /*
  65        Since we have initialized and loaded the Socket library we will
  66        check now to whether we have IPv6 on this platform and if the
  67        supporting socket APIs are available
  68     */
  69     IPv6_available = IPv6_supported() & (!preferIPv4Stack);
  70     platformInit();
  71     parseExclusiveBindProperty(env);
  72 
  73     return JNI_VERSION_1_2;
  74 }
  75 




  29 #include "net_util.h"
  30 
  31 int IPv6_supported() ;
  32 
  33 static int IPv6_available;
  34 
  35 JNIEXPORT jint JNICALL ipv6_available()
  36 {
  37     return IPv6_available ;
  38 }
  39 
  40 JNIEXPORT jint JNICALL
  41 JNI_OnLoad(JavaVM *vm, void *reserved)
  42 {
  43     JNIEnv *env;
  44     jclass iCls;
  45     jmethodID mid;
  46     jstring s;
  47     jint preferIPv4Stack;
  48 
  49     if ((*vm)->GetEnv(vm, (void**) &env, JNI_VERSION_1_2) != JNI_OK) {
  50         return JNI_EVERSION; /* JNI version not supported */




  51     }
  52 
  53     iCls = (*env)->FindClass(env, "java/lang/Boolean");
  54     CHECK_NULL_RETURN(iCls, JNI_VERSION_1_2);
  55     mid = (*env)->GetStaticMethodID(env, iCls, "getBoolean", "(Ljava/lang/String;)Z");
  56     CHECK_NULL_RETURN(mid, JNI_VERSION_1_2);
  57     s = (*env)->NewStringUTF(env, "java.net.preferIPv4Stack");
  58     CHECK_NULL_RETURN(s, JNI_VERSION_1_2);
  59     preferIPv4Stack = (*env)->CallStaticBooleanMethod(env, iCls, mid, s);
  60 
  61     /*
  62        Since we have initialized and loaded the Socket library we will
  63        check now to whether we have IPv6 on this platform and if the
  64        supporting socket APIs are available
  65     */
  66     IPv6_available = IPv6_supported() & (!preferIPv4Stack);
  67     platformInit();
  68     parseExclusiveBindProperty(env);
  69 
  70     return JNI_VERSION_1_2;
  71 }
  72