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 |