src/java.base/windows/native/libnet/TwoStacksPlainDatagramSocketImpl.c
changeset 59313 6f12009ea9d7
parent 55375 96c7427456f9
equal deleted inserted replaced
59312:43eee1237934 59313:6f12009ea9d7
  1689 
  1689 
  1690         static jclass ni_class; static jmethodID ni_ctrID;
  1690         static jclass ni_class; static jmethodID ni_ctrID;
  1691         static jfieldID ni_indexID;
  1691         static jfieldID ni_indexID;
  1692         static jfieldID ni_addrsID;
  1692         static jfieldID ni_addrsID;
  1693 
  1693 
  1694         jobjectArray addrArray;
       
  1695         jobject addr;
  1694         jobject addr;
  1696         jobject ni;
  1695         jobject ni;
  1697 
  1696 
  1698         struct in_addr in;
  1697         struct in_addr in;
  1699         struct in_addr *inP = ∈
  1698         struct in_addr *inP = ∈
  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