1747 } |
1746 } |
1748 ni = Java_java_net_NetworkInterface_getByInetAddress0(env, ni_class, addr); |
1747 ni = Java_java_net_NetworkInterface_getByInetAddress0(env, ni_class, addr); |
1749 if (ni) { |
1748 if (ni) { |
1750 return ni; |
1749 return ni; |
1751 } |
1750 } |
1752 if (ipv4Mode) { |
1751 return NULL; |
1753 ni = (*env)->NewObject(env, ni_class, ni_ctrID, 0); |
|
1754 CHECK_NULL_RETURN(ni, NULL); |
|
1755 |
|
1756 (*env)->SetIntField(env, ni, ni_indexID, -1); |
|
1757 addrArray = (*env)->NewObjectArray(env, 1, inet4_class, NULL); |
|
1758 CHECK_NULL_RETURN(addrArray, NULL); |
|
1759 (*env)->SetObjectArrayElement(env, addrArray, 0, addr); |
|
1760 (*env)->SetObjectField(env, ni, ni_addrsID, addrArray); |
|
1761 } else { |
|
1762 ni = NULL; |
|
1763 } |
|
1764 return ni; |
|
1765 } |
1752 } |
1766 |
1753 |
1767 /* |
1754 /* |
1768 * Return the multicast interface: |
1755 * Return the multicast interface: |
1769 * |
1756 * |
1896 netObject = getIPv4NetworkInterface(env, this, fd, opt, 0); |
1883 netObject = getIPv4NetworkInterface(env, this, fd, opt, 0); |
1897 if (netObject != NULL) { |
1884 if (netObject != NULL) { |
1898 return netObject; |
1885 return netObject; |
1899 } |
1886 } |
1900 } |
1887 } |
1901 |
|
1902 /* |
|
1903 * Multicast to any address - return anyLocalAddress |
|
1904 * or a NetworkInterface with addrs[0] set to anyLocalAddress |
|
1905 */ |
|
1906 |
|
1907 addr = (*env)->CallStaticObjectMethod(env, ia_class, ia_anyLocalAddressID, |
|
1908 NULL); |
|
1909 if (opt == java_net_SocketOptions_IP_MULTICAST_IF) { |
|
1910 return addr; |
|
1911 } |
|
1912 |
|
1913 ni = (*env)->NewObject(env, ni_class, ni_ctrID, 0); |
|
1914 CHECK_NULL_RETURN(ni, NULL); |
|
1915 (*env)->SetIntField(env, ni, ni_indexID, -1); |
|
1916 addrArray = (*env)->NewObjectArray(env, 1, ia_class, NULL); |
|
1917 CHECK_NULL_RETURN(addrArray, NULL); |
|
1918 (*env)->SetObjectArrayElement(env, addrArray, 0, addr); |
|
1919 (*env)->SetObjectField(env, ni, ni_addrsID, addrArray); |
|
1920 return ni; |
|
1921 } |
1888 } |
1922 return NULL; |
1889 return NULL; |
1923 } |
1890 } |
1924 |
1891 |
1925 |
1892 |