jdk/src/solaris/native/java/net/Inet4AddressImpl.c
changeset 16870 f35b2bd19761
parent 14342 8435a30053c1
child 20741 6eb501508669
equal deleted inserted replaced
16869:4adc2d6d2d5a 16870:f35b2bd19761
   133       ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
   133       ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
   134       ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
   134       ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
   135       ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
   135       ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
   136       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
   136       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
   137       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   137       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   138       ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I");
       
   139       ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I");
       
   140       ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;");
       
   141       initialized = 1;
   138       initialized = 1;
   142     }
   139     }
   143 
   140 
   144     if (IS_NULL(host)) {
   141     if (IS_NULL(host)) {
   145         JNU_ThrowNullPointerException(env, "host is null");
   142         JNU_ThrowNullPointerException(env, "host is null");
   236             if (IS_NULL(iaObj)) {
   233             if (IS_NULL(iaObj)) {
   237                 /* we may have memory to free at the end of this */
   234                 /* we may have memory to free at the end of this */
   238                 ret = NULL;
   235                 ret = NULL;
   239                 goto cleanupAndReturn;
   236                 goto cleanupAndReturn;
   240             }
   237             }
   241             (*env)->SetIntField(env, iaObj, ni_iaaddressID,
   238             setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)(iterator->ai_addr))->sin_addr.s_addr));
   242                                 ntohl(((struct sockaddr_in*)(iterator->ai_addr))->sin_addr.s_addr));
   239             setInetAddress_hostName(env, iaObj, name);
   243             (*env)->SetObjectField(env, iaObj, ni_iahostID, name);
       
   244             (*env)->SetObjectArrayElement(env, ret, retLen - i -1, iaObj);
   240             (*env)->SetObjectArrayElement(env, ret, retLen - i -1, iaObj);
   245             i++;
   241             i++;
   246             iterator = iterator->ai_next;
   242             iterator = iterator->ai_next;
   247         }
   243         }
   248     }
   244     }
   370 }
   366 }
   371 
   367 
   372 static jclass ni_iacls;
   368 static jclass ni_iacls;
   373 static jclass ni_ia4cls;
   369 static jclass ni_ia4cls;
   374 static jmethodID ni_ia4ctrID;
   370 static jmethodID ni_ia4ctrID;
   375 static jfieldID ni_iaaddressID;
       
   376 static jfieldID ni_iahostID;
       
   377 static jfieldID ni_iafamilyID;
       
   378 static int initialized = 0;
   371 static int initialized = 0;
   379 
   372 
   380 /*
   373 /*
   381  * Find an internet address for a given hostname.  Note that this
   374  * Find an internet address for a given hostname.  Note that this
   382  * code only works for addresses of type INET. The translation
   375  * code only works for addresses of type INET. The translation
   401       ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
   394       ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
   402       ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
   395       ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
   403       ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
   396       ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
   404       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
   397       ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
   405       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   398       ni_ia4ctrID = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   406       ni_iaaddressID = (*env)->GetFieldID(env, ni_iacls, "address", "I");
       
   407       ni_iafamilyID = (*env)->GetFieldID(env, ni_iacls, "family", "I");
       
   408       ni_iahostID = (*env)->GetFieldID(env, ni_iacls, "hostName", "Ljava/lang/String;");
       
   409       initialized = 1;
   399       initialized = 1;
   410     }
   400     }
   411 
   401 
   412     if (IS_NULL(host)) {
   402     if (IS_NULL(host)) {
   413         JNU_ThrowNullPointerException(env, "host is null");
   403         JNU_ThrowNullPointerException(env, "host is null");
   497             jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
   487             jobject iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4ctrID);
   498             if (IS_NULL(iaObj)) {
   488             if (IS_NULL(iaObj)) {
   499                 ret = NULL;
   489                 ret = NULL;
   500                 goto cleanupAndReturn;
   490                 goto cleanupAndReturn;
   501             }
   491             }
   502             (*env)->SetIntField(env, iaObj, ni_iaaddressID,
   492             setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
   503                                 ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
   493             setInetAddress_hostName(env, iaObj, host);
   504             (*env)->SetObjectField(env, iaObj, ni_iahostID, host);
       
   505             (*env)->SetObjectArrayElement(env, ret, i++, iaObj);
   494             (*env)->SetObjectArrayElement(env, ret, i++, iaObj);
   506             iterator = iterator->ai_next;
   495             iterator = iterator->ai_next;
   507         }
   496         }
   508     }
   497     }
   509 
   498