jdk/src/windows/native/java/net/NetworkInterface.c
changeset 16870 f35b2bd19761
parent 14768 8800c12ef525
child 17193 8b561b7fb87a
equal deleted inserted replaced
16869:4adc2d6d2d5a 16870:f35b2bd19761
    64 jfieldID ni_bindsID;        /* NetworkInterface.bindings */
    64 jfieldID ni_bindsID;        /* NetworkInterface.bindings */
    65 jfieldID ni_nameID;         /* NetworkInterface.name */
    65 jfieldID ni_nameID;         /* NetworkInterface.name */
    66 jfieldID ni_displayNameID;  /* NetworkInterface.displayName */
    66 jfieldID ni_displayNameID;  /* NetworkInterface.displayName */
    67 jfieldID ni_childsID;       /* NetworkInterface.childs */
    67 jfieldID ni_childsID;       /* NetworkInterface.childs */
    68 jclass ni_iacls;            /* InetAddress */
    68 jclass ni_iacls;            /* InetAddress */
    69 jfieldID ni_iaAddr;         /* InetAddress.address */
       
    70 
    69 
    71 jclass ni_ia4cls;           /* Inet4Address */
    70 jclass ni_ia4cls;           /* Inet4Address */
    72 jmethodID ni_ia4Ctor;       /* Inet4Address() */
    71 jmethodID ni_ia4Ctor;       /* Inet4Address() */
    73 
    72 
    74 jclass ni_ia6cls;           /* Inet6Address */
    73 jclass ni_ia6cls;           /* Inet6Address */
   478     ni_childsID = (*env)->GetFieldID(env, ni_class, "childs", "[Ljava/net/NetworkInterface;");
   477     ni_childsID = (*env)->GetFieldID(env, ni_class, "childs", "[Ljava/net/NetworkInterface;");
   479     ni_ctor = (*env)->GetMethodID(env, ni_class, "<init>", "()V");
   478     ni_ctor = (*env)->GetMethodID(env, ni_class, "<init>", "()V");
   480 
   479 
   481     ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
   480     ni_iacls = (*env)->FindClass(env, "java/net/InetAddress");
   482     ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
   481     ni_iacls = (*env)->NewGlobalRef(env, ni_iacls);
   483     ni_iaAddr = (*env)->GetFieldID(env, ni_iacls, "address", "I");
       
   484 
   482 
   485     ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
   483     ni_ia4cls = (*env)->FindClass(env, "java/net/Inet4Address");
   486     ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
   484     ni_ia4cls = (*env)->NewGlobalRef(env, ni_ia4cls);
   487     ni_ia4Ctor = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   485     ni_ia4Ctor = (*env)->GetMethodID(env, ni_ia4cls, "<init>", "()V");
   488 
   486 
   566                 free_netaddr(netaddrP);
   564                 free_netaddr(netaddrP);
   567                 return NULL;
   565                 return NULL;
   568             }
   566             }
   569             /* default ctor will set family to AF_INET */
   567             /* default ctor will set family to AF_INET */
   570 
   568 
   571             (*env)->SetIntField(env, iaObj, ni_iaAddr, ntohl(addrs->addr.him4.sin_addr.s_addr));
   569             setInetAddress_addr(env, iaObj, ntohl(addrs->addr.him4.sin_addr.s_addr));
   572             if (addrs->mask != -1) {
   570             if (addrs->mask != -1) {
   573               ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
   571               ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
   574               if (ibObj == NULL) {
   572               if (ibObj == NULL) {
   575                 free_netaddr(netaddrP);
   573                 free_netaddr(netaddrP);
   576                 return NULL;
   574                 return NULL;
   579               ia2Obj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor);
   577               ia2Obj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor);
   580               if (ia2Obj == NULL) {
   578               if (ia2Obj == NULL) {
   581                 free_netaddr(netaddrP);
   579                 free_netaddr(netaddrP);
   582                 return NULL;
   580                 return NULL;
   583               }
   581               }
   584               (*env)->SetIntField(env, ia2Obj, ni_iaAddr,
   582               setInetAddress_addr(env, ia2Obj, ntohl(addrs->brdcast.him4.sin_addr.s_addr));
   585                                   ntohl(addrs->brdcast.him4.sin_addr.s_addr));
       
   586               (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj);
   583               (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj);
   587               (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
   584               (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
   588               (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
   585               (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
   589             }
   586             }
   590         } else /* AF_INET6 */ {
   587         } else /* AF_INET6 */ {
   734  */
   731  */
   735 JNIEXPORT jobject JNICALL Java_java_net_NetworkInterface_getByInetAddress0
   732 JNIEXPORT jobject JNICALL Java_java_net_NetworkInterface_getByInetAddress0
   736     (JNIEnv *env, jclass cls, jobject iaObj)
   733     (JNIEnv *env, jclass cls, jobject iaObj)
   737 {
   734 {
   738     netif *ifList, *curr;
   735     netif *ifList, *curr;
   739     jint addr = (*env)->GetIntField(env, iaObj, ni_iaAddr);
   736     jint addr = getInetAddress_addr(env, iaObj);
   740     jobject netifObj = NULL;
   737     jobject netifObj = NULL;
   741 
   738 
   742     // Retained for now to support IPv4 only stack, java.net.preferIPv4Stack
   739     // Retained for now to support IPv4 only stack, java.net.preferIPv4Stack
   743     if (ipv6_available()) {
   740     if (ipv6_available()) {
   744         return Java_java_net_NetworkInterface_getByInetAddress0_XP (env, cls, iaObj);
   741         return Java_java_net_NetworkInterface_getByInetAddress0_XP (env, cls, iaObj);