jdk/src/windows/native/java/net/net_util_md.c
changeset 16870 f35b2bd19761
parent 14342 8435a30053c1
child 18192 fa6bd0992104
equal deleted inserted replaced
16869:4adc2d6d2d5a 16870:f35b2bd19761
   802 */
   802 */
   803 JNIEXPORT int JNICALL
   803 JNIEXPORT int JNICALL
   804 NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port, struct sockaddr *him,
   804 NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port, struct sockaddr *him,
   805                           int *len, jboolean v4MappedAddress) {
   805                           int *len, jboolean v4MappedAddress) {
   806     jint family, iafam;
   806     jint family, iafam;
   807     iafam = (*env)->GetIntField(env, iaObj, ia_familyID);
   807     iafam = getInetAddress_family(env, iaObj);
   808     family = (iafam == IPv4)? AF_INET : AF_INET6;
   808     family = (iafam == IPv4)? AF_INET : AF_INET6;
   809     if (ipv6_available() && !(family == AF_INET && v4MappedAddress == JNI_FALSE)) {
   809     if (ipv6_available() && !(family == AF_INET && v4MappedAddress == JNI_FALSE)) {
   810         struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him;
   810         struct SOCKADDR_IN6 *him6 = (struct SOCKADDR_IN6 *)him;
   811         jbyteArray ipaddress;
   811         jbyteArray ipaddress;
   812         jbyte caddr[16];
   812         jbyte caddr[16];
   813         jint address, scopeid = 0;
   813         jint address, scopeid = 0;
   814         jint cached_scope_id = 0;
   814         jint cached_scope_id = 0;
   815 
   815 
   816         if (family == AF_INET) { /* will convert to IPv4-mapped address */
   816         if (family == AF_INET) { /* will convert to IPv4-mapped address */
   817             memset((char *) caddr, 0, 16);
   817             memset((char *) caddr, 0, 16);
   818             address = (*env)->GetIntField(env, iaObj, ia_addressID);
   818             address = getInetAddress_addr(env, iaObj);
   819             if (address == INADDR_ANY) {
   819             if (address == INADDR_ANY) {
   820                 /* we would always prefer IPv6 wildcard address
   820                 /* we would always prefer IPv6 wildcard address
   821                 caddr[10] = 0xff;
   821                 caddr[10] = 0xff;
   822                 caddr[11] = 0xff; */
   822                 caddr[11] = 0xff; */
   823             } else {
   823             } else {
   852         if (family != AF_INET) {
   852         if (family != AF_INET) {
   853           JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Protocol family unavailable");
   853           JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", "Protocol family unavailable");
   854           return -1;
   854           return -1;
   855         }
   855         }
   856         memset((char *) him4, 0, sizeof(struct sockaddr_in));
   856         memset((char *) him4, 0, sizeof(struct sockaddr_in));
   857         address = (int)(*env)->GetIntField(env, iaObj, ia_addressID);
   857         address = getInetAddress_addr(env, iaObj);
   858         him4->sin_port = htons((short) port);
   858         him4->sin_port = htons((short) port);
   859         him4->sin_addr.s_addr = (u_long) htonl(address);
   859         him4->sin_addr.s_addr = (u_long) htonl(address);
   860         him4->sin_family = AF_INET;
   860         him4->sin_family = AF_INET;
   861         *len = sizeof(struct sockaddr_in);
   861         *len = sizeof(struct sockaddr_in);
   862     }
   862     }