Print this page


Split Close
Expand all
Collapse all
          --- old/src/windows/native/java/net/NetworkInterface_winXP.c
          +++ new/src/windows/native/java/net/NetworkInterface_winXP.c
↓ open down ↓ 428 lines elided ↑ open up ↑
 429  429      jobjectArray addrArr, bindsArr, childArr;
 430  430      netaddr *addrs;
 431  431      jint addr_index;
 432  432      int netaddrCount=ifs->naddrs;
 433  433      netaddr *netaddrP=ifs->addrs;
 434  434      jint bind_index;
 435  435  
 436  436      /*
 437  437       * Create a NetworkInterface object and populate it
 438  438       */
 439      -    netifObj = (*env)->NewObject(env, ni_class, ni_ctor);
      439 +    netifObj = (*env)->NewObject(env, ni_class, ni_ctrID);
 440  440      name = (*env)->NewStringUTF(env, ifs->name);
 441  441      if (ifs->dNameIsUnicode) {
 442  442          displayName = (*env)->NewString(env, (PWCHAR)ifs->displayName, wcslen ((PWCHAR)ifs->displayName));
 443  443      } else {
 444  444          displayName = (*env)->NewStringUTF(env, ifs->displayName);
 445  445      }
 446  446      if (netifObj == NULL || name == NULL || displayName == NULL) {
 447  447          return NULL;
 448  448      }
 449  449      (*env)->SetObjectField(env, netifObj, ni_nameID, name);
↓ open down ↓ 5 lines elided ↑ open up ↑
 455  455       * Note that 0 is a valid number of addresses.
 456  456       */
 457  457      if (netaddrCount < 0) {
 458  458          netaddrCount = enumAddresses_win(env, ifs, &netaddrP);
 459  459          if ((*env)->ExceptionOccurred(env)) {
 460  460              free_netaddr(netaddrP);
 461  461              return NULL;
 462  462          }
 463  463      }
 464  464  
 465      -    addrArr = (*env)->NewObjectArray(env, netaddrCount, ni_iacls, NULL);
      465 +    addrArr = (*env)->NewObjectArray(env, netaddrCount, ia_class, NULL);
 466  466      if (addrArr == NULL) {
 467  467          return NULL;
 468  468      }
 469  469  
 470  470      bindsArr = (*env)->NewObjectArray(env, netaddrCount, ni_ibcls, NULL);
 471  471      if (bindsArr == NULL) {
 472  472        free_netaddr(netaddrP);
 473  473        return NULL;
 474  474      }
 475  475  
 476  476      addrs = netaddrP;
 477  477      addr_index = 0;
 478  478      bind_index = 0;
 479  479      while (addrs != NULL) {
 480  480          jobject iaObj, ia2Obj;
 481  481          jobject ibObj = NULL;
 482  482          if (addrs->addr.him.sa_family == AF_INET) {
 483      -            iaObj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor);
      483 +            iaObj = (*env)->NewObject(env, ia4_class, ia4_ctrID);
 484  484              if (iaObj == NULL) {
 485  485                  return NULL;
 486  486              }
 487  487              /* default ctor will set family to AF_INET */
 488  488  
 489      -            (*env)->SetIntField(env, iaObj, ni_iaAddr, ntohl(addrs->addr.him4.sin_addr.s_addr));
      489 +            (*env)->SetIntField(env, iaObj, ia_addressID, ntohl(addrs->addr.him4.sin_addr.s_addr));
 490  490  
 491  491              ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
 492  492              if (ibObj == NULL) {
 493  493                free_netaddr(netaddrP);
 494  494                return NULL;
 495  495              }
 496  496              (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj);
 497      -            ia2Obj = (*env)->NewObject(env, ni_ia4cls, ni_ia4Ctor);
      497 +            ia2Obj = (*env)->NewObject(env, ia4_class, ia4_ctrID);
 498  498              if (ia2Obj == NULL) {
 499  499                free_netaddr(netaddrP);
 500  500                return NULL;
 501  501              }
 502      -            (*env)->SetIntField(env, ia2Obj, ni_iaAddr,
      502 +            (*env)->SetIntField(env, ia2Obj, ia_addressID,
 503  503                                  ntohl(addrs->brdcast.him4.sin_addr.s_addr));
 504  504              (*env)->SetObjectField(env, ibObj, ni_ibbroadcastID, ia2Obj);
 505  505              (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
 506  506              (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
 507  507          } else /* AF_INET6 */ {
 508  508              int scope;
 509      -            iaObj = (*env)->NewObject(env, ni_ia6cls, ni_ia6ctrID);
      509 +            iaObj = (*env)->NewObject(env, ia6_class, ia6_ctrID);
 510  510              if (iaObj) {
 511  511                  jbyteArray ipaddress = (*env)->NewByteArray(env, 16);
 512  512                  if (ipaddress == NULL) {
 513  513                      return NULL;
 514  514                  }
 515  515                  (*env)->SetByteArrayRegion(env, ipaddress, 0, 16,
 516  516                      (jbyte *)&(addrs->addr.him6.sin6_addr.s6_addr));
 517  517                  scope = addrs->addr.him6.sin6_scope_id;
 518  518                  if (scope != 0) { /* zero is default value, no need to set */
 519  519                      (*env)->SetIntField(env, iaObj, ia6_scopeidID, scope);
 520  520                      (*env)->SetBooleanField(env, iaObj, ia6_scopeidsetID, JNI_TRUE);
 521  521                      (*env)->SetObjectField(env, iaObj, ia6_scopeifnameID, netifObj);
 522  522                  }
 523      -                (*env)->SetObjectField(env, iaObj, ni_ia6ipaddressID, ipaddress);
      523 +                (*env)->SetObjectField(env, iaObj, ia6_ipaddressID, ipaddress);
 524  524                  ibObj = (*env)->NewObject(env, ni_ibcls, ni_ibctrID);
 525  525                  if (ibObj == NULL) {
 526  526                    free_netaddr(netaddrP);
 527  527                    return NULL;
 528  528                  }
 529  529                  (*env)->SetObjectField(env, ibObj, ni_ibaddressID, iaObj);
 530  530                  (*env)->SetShortField(env, ibObj, ni_ibmaskID, addrs->mask);
 531  531                  (*env)->SetObjectArrayElement(env, bindsArr, bind_index++, ibObj);
 532  532              }
 533  533          }
↓ open down ↓ 317 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX