jdk/src/windows/native/java/net/Inet6AddressImpl.c
changeset 16870 f35b2bd19761
parent 14342 8435a30053c1
child 20821 e0d0a585aa49
equal deleted inserted replaced
16869:4adc2d6d2d5a 16870:f35b2bd19761
    75 static jclass ni_iacls;
    75 static jclass ni_iacls;
    76 static jclass ni_ia4cls;
    76 static jclass ni_ia4cls;
    77 static jclass ni_ia6cls;
    77 static jclass ni_ia6cls;
    78 static jmethodID ni_ia4ctrID;
    78 static jmethodID ni_ia4ctrID;
    79 static jmethodID ni_ia6ctrID;
    79 static jmethodID ni_ia6ctrID;
    80 static jfieldID ni_iaaddressID;
       
    81 static jfieldID ni_iahostID;
       
    82 static jfieldID ni_iafamilyID;
       
    83 static jfieldID ni_ia6ipaddressID;
    80 static jfieldID ni_ia6ipaddressID;
    84 static int initialized = 0;
    81 static int initialized = 0;
    85 
    82 
    86 JNIEXPORT jobjectArray JNICALL
    83 JNIEXPORT jobjectArray JNICALL
    87 Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
    84 Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
   102       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
    99       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
   103       ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address");
   100       ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address");
   104       ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
   101       ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
   105       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   102       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   106       ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
   103       ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
   107       ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I");
       
   108       ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I");
       
   109       ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;");
       
   110       ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B");
   104       ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B");
   111       initialized = 1;
   105       initialized = 1;
   112     }
   106     }
   113     if (IS_NULL(host)) {
   107     if (IS_NULL(host)) {
   114         JNU_ThrowNullPointerException(env, "host is null");
   108         JNU_ThrowNullPointerException(env, "host is null");
   241               jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
   235               jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
   242               if (IS_NULL(iaObj)) {
   236               if (IS_NULL(iaObj)) {
   243                 ret = NULL;
   237                 ret = NULL;
   244                 goto cleanupAndReturn;
   238                 goto cleanupAndReturn;
   245               }
   239               }
   246               (*env)->SetIntField(env, iaObj, ni_iaaddressID,
   240               setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
   247                                   ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
   241               setInetAddress_hostName(env, iaObj, host);
   248               (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
       
   249               (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
   242               (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
   250                 inetIndex ++;
   243                 inetIndex ++;
   251             } else if (iterator->ai_family == AF_INET6) {
   244             } else if (iterator->ai_family == AF_INET6) {
   252               jint scope = 0;
   245               jint scope = 0;
   253               jbyteArray ipaddress;
   246               jbyteArray ipaddress;
   267               if (scope != 0) { /* zero is default value, no need to set */
   260               if (scope != 0) { /* zero is default value, no need to set */
   268                 (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
   261                 (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
   269                 (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
   262                 (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
   270               }
   263               }
   271               (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
   264               (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
   272               (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
   265               setInetAddress_hostName(env, iaObj, host);
   273               (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
   266               (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
   274               inet6Index ++;
   267               inet6Index ++;
   275             }
   268             }
   276             iterator = iterator->ai_next;
   269             iterator = iterator->ai_next;
   277         }
   270         }