jdk/src/solaris/native/java/net/Inet6AddressImpl.c
changeset 16870 f35b2bd19761
parent 13999 f6a2ce6a3e40
child 20821 e0d0a585aa49
child 20741 6eb501508669
equal deleted inserted replaced
16869:4adc2d6d2d5a 16870:f35b2bd19761
   118 static jclass ni_iacls;
   118 static jclass ni_iacls;
   119 static jclass ni_ia4cls;
   119 static jclass ni_ia4cls;
   120 static jclass ni_ia6cls;
   120 static jclass ni_ia6cls;
   121 static jmethodID ni_ia4ctrID;
   121 static jmethodID ni_ia4ctrID;
   122 static jmethodID ni_ia6ctrID;
   122 static jmethodID ni_ia6ctrID;
   123 static jfieldID ni_iaaddressID;
       
   124 static jfieldID ni_iahostID;
       
   125 static jfieldID ni_iafamilyID;
       
   126 static jfieldID ni_ia6ipaddressID;
   123 static jfieldID ni_ia6ipaddressID;
   127 static int initialized = 0;
   124 static int initialized = 0;
   128 
   125 
   129 /*
   126 /*
   130  * Find an internet address for a given hostname.  Note that this
   127  * Find an internet address for a given hostname.  Note that this
   157       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
   154       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
   158       ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address");
   155       ni_ia6cls = (*env)->FindClass(env, "java/net/Inet6Address");
   159       ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
   156       ni_ia6cls = (*env)->NewGlobalRef(env, ni_ia6cls);
   160       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   157       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   161       ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
   158       ni_ia6ctrID = (*env)->GetMethodID(env, ni_ia6cls, "<init>", "()V");
   162       ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I");
       
   163       ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I");
       
   164       ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;");
       
   165       ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B");
   159       ni_ia6ipaddressID = (*env)->GetFieldID(env, ni_ia6cls, "ipaddress", "[B");
   166       initialized = 1;
   160       initialized = 1;
   167     }
   161     }
   168 
   162 
   169     if (IS_NULL(host)) {
   163     if (IS_NULL(host)) {
   313                 jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
   307                 jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
   314                 if (IS_NULL(iaObj)) {
   308                 if (IS_NULL(iaObj)) {
   315                     ret = NULL;
   309                     ret = NULL;
   316                     goto cleanupAndReturn;
   310                     goto cleanupAndReturn;
   317                 }
   311                 }
   318                 (*env)->SetIntField(env, iaObj, ni_iaaddressID,
   312                 setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
   319                                     ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
   313                 setInetAddress_hostName(env, iaObj, host);
   320                 (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
       
   321                 (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
   314                 (*env)->SetObjectArrayElement(env, ret, inetIndex, iaObj);
   322                 inetIndex++;
   315                 inetIndex++;
   323             } else if (iterator->ai_family == AF_INET6) {
   316             } else if (iterator->ai_family == AF_INET6) {
   324                 jint scope = 0;
   317                 jint scope = 0;
   325                 jbyteArray ipaddress;
   318                 jbyteArray ipaddress;
   340                 if (scope != 0) { /* zero is default value, no need to set */
   333                 if (scope != 0) { /* zero is default value, no need to set */
   341                     (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
   334                     (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
   342                     (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
   335                     (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
   343                 }
   336                 }
   344                 (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
   337                 (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
   345                 (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
   338                 setInetAddress_hostName(env, iaObj, host);
   346                 (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
   339                 (*env)->SetObjectArrayElement(env, ret, inet6Index, iaObj);
   347                 inet6Index++;
   340                 inet6Index++;
   348             }
   341             }
   349             iterator = iterator->ai_next;
   342             iterator = iterator->ai_next;
   350         }
   343         }