1492 ni = Java_java_net_NetworkInterface_getByInetAddress0(env, ni_class, addr); |
1492 ni = Java_java_net_NetworkInterface_getByInetAddress0(env, ni_class, addr); |
1493 JNU_CHECK_EXCEPTION_RETURN(env, NULL); |
1493 JNU_CHECK_EXCEPTION_RETURN(env, NULL); |
1494 if (ni) { |
1494 if (ni) { |
1495 return ni; |
1495 return ni; |
1496 } |
1496 } |
1497 |
1497 return NULL; |
1498 /* |
|
1499 * The address doesn't appear to be bound at any known |
|
1500 * NetworkInterface. Therefore we construct a NetworkInterface |
|
1501 * with this address. |
|
1502 */ |
|
1503 ni = (*env)->NewObject(env, ni_class, ni_ctrID, 0); |
|
1504 CHECK_NULL_RETURN(ni, NULL); |
|
1505 |
|
1506 (*env)->SetIntField(env, ni, ni_indexID, -1); |
|
1507 addrArray = (*env)->NewObjectArray(env, 1, inet4_class, NULL); |
|
1508 CHECK_NULL_RETURN(addrArray, NULL); |
|
1509 (*env)->SetObjectArrayElement(env, addrArray, 0, addr); |
|
1510 (*env)->SetObjectField(env, ni, ni_addrsID, addrArray); |
|
1511 ni_name = (*env)->NewStringUTF(env, ""); |
|
1512 if (ni_name != NULL) { |
|
1513 (*env)->SetObjectField(env, ni, ni_nameID, ni_name); |
|
1514 } |
|
1515 return ni; |
|
1516 } |
1498 } |
1517 |
1499 |
1518 |
1500 |
1519 /* |
1501 /* |
1520 * IPv6 implementation |
1502 * IPv6 implementation |
1617 addr = (*env)->CallStaticObjectMethod(env, ia_class, ia_anyLocalAddressID, |
1599 addr = (*env)->CallStaticObjectMethod(env, ia_class, ia_anyLocalAddressID, |
1618 NULL); |
1600 NULL); |
1619 if (opt == java_net_SocketOptions_IP_MULTICAST_IF) { |
1601 if (opt == java_net_SocketOptions_IP_MULTICAST_IF) { |
1620 return addr; |
1602 return addr; |
1621 } |
1603 } |
1622 |
|
1623 ni = (*env)->NewObject(env, ni_class, ni_ctrID, 0); |
|
1624 CHECK_NULL_RETURN(ni, NULL); |
|
1625 (*env)->SetIntField(env, ni, ni_indexID, -1); |
|
1626 addrArray = (*env)->NewObjectArray(env, 1, ia_class, NULL); |
|
1627 CHECK_NULL_RETURN(addrArray, NULL); |
|
1628 (*env)->SetObjectArrayElement(env, addrArray, 0, addr); |
|
1629 (*env)->SetObjectField(env, ni, ni_addrsID, addrArray); |
|
1630 ni_name = (*env)->NewStringUTF(env, ""); |
|
1631 if (ni_name != NULL) { |
|
1632 (*env)->SetObjectField(env, ni, ni_nameID, ni_name); |
|
1633 } |
|
1634 return ni; |
|
1635 } |
1604 } |
1636 return NULL; |
1605 return NULL; |
1637 } |
1606 } |
1638 |
1607 |
1639 |
1608 |