mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
Merge
This commit is contained in:
commit
28e828130d
129 changed files with 2316 additions and 591 deletions
|
@ -193,7 +193,11 @@ Java_java_net_Inet4AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
|
|||
}
|
||||
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in *)
|
||||
(iterator->ai_addr))->sin_addr.s_addr));
|
||||
if ((*env)->ExceptionCheck(env))
|
||||
goto cleanupAndReturn;
|
||||
setInetAddress_hostName(env, iaObj, host);
|
||||
if ((*env)->ExceptionCheck(env))
|
||||
goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, i++, iaObj);
|
||||
iterator = iterator->ai_next;
|
||||
}
|
||||
|
|
|
@ -198,6 +198,8 @@ lookupIfLocalhost(JNIEnv *env, const char *hostname, jboolean includeV6)
|
|||
return NULL;
|
||||
}
|
||||
setInetAddress_hostName(env, o, name);
|
||||
if ((*env)->ExceptionCheck(env))
|
||||
goto done;
|
||||
(*env)->SetObjectArrayElement(env, result, index, o);
|
||||
(*env)->DeleteLocalRef(env, o);
|
||||
}
|
||||
|
@ -355,7 +357,11 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
|
|||
goto cleanupAndReturn;
|
||||
}
|
||||
setInetAddress_addr(env, iaObj, ntohl(((struct sockaddr_in*)iterator->ai_addr)->sin_addr.s_addr));
|
||||
if ((*env)->ExceptionCheck(env))
|
||||
goto cleanupAndReturn;
|
||||
setInetAddress_hostName(env, iaObj, host);
|
||||
if ((*env)->ExceptionCheck(env))
|
||||
goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, (inetIndex | originalIndex), iaObj);
|
||||
inetIndex++;
|
||||
} else if (iterator->ai_family == AF_INET6) {
|
||||
|
@ -376,6 +382,8 @@ Java_java_net_Inet6AddressImpl_lookupAllHostAddr(JNIEnv *env, jobject this,
|
|||
setInet6Address_scopeid(env, iaObj, scope);
|
||||
}
|
||||
setInetAddress_hostName(env, iaObj, host);
|
||||
if ((*env)->ExceptionCheck(env))
|
||||
goto cleanupAndReturn;
|
||||
(*env)->SetObjectArrayElement(env, ret, (inet6Index | originalIndex), iaObj);
|
||||
inet6Index++;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -329,11 +329,11 @@ JNIEXPORT jobject JNICALL Java_java_net_NetworkInterface_getByInetAddress0
|
|||
(JNIEnv *env, jclass cls, jobject iaObj)
|
||||
{
|
||||
netif *ifs, *curr;
|
||||
int family = (getInetAddress_family(env, iaObj) == java_net_InetAddress_IPv4) ?
|
||||
AF_INET : AF_INET6;
|
||||
jobject obj = NULL;
|
||||
jboolean match = JNI_FALSE;
|
||||
|
||||
int family = (getInetAddress_family(env, iaObj) == java_net_InetAddress_IPv4) ?
|
||||
AF_INET : AF_INET6;
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
ifs = enumInterfaces(env);
|
||||
if (ifs == NULL) {
|
||||
return NULL;
|
||||
|
@ -351,7 +351,7 @@ JNIEXPORT jobject JNICALL Java_java_net_NetworkInterface_getByInetAddress0
|
|||
int address1 = htonl(
|
||||
((struct sockaddr_in *)addrP->addr)->sin_addr.s_addr);
|
||||
int address2 = getInetAddress_addr(env, iaObj);
|
||||
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
if (address1 == address2) {
|
||||
match = JNI_TRUE;
|
||||
break;
|
||||
|
@ -698,6 +698,7 @@ static jobject createNetworkInterface(JNIEnv *env, netif *ifs) {
|
|||
if (iaObj) {
|
||||
setInetAddress_addr(env, iaObj, htonl(
|
||||
((struct sockaddr_in*)addrP->addr)->sin_addr.s_addr));
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -710,6 +711,7 @@ static jobject createNetworkInterface(JNIEnv *env, netif *ifs) {
|
|||
if (ia2Obj) {
|
||||
setInetAddress_addr(env, ia2Obj, htonl(
|
||||
((struct sockaddr_in*)addrP->brdcast)->sin_addr.s_addr));
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
(*env)->SetObjectField(env, ibObj, ni_ib4broadcastID, ia2Obj);
|
||||
} else {
|
||||
return NULL;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -531,9 +531,12 @@ Java_java_net_PlainDatagramSocketImpl_peek(JNIEnv *env, jobject this,
|
|||
iaObj = NET_SockaddrToInetAddress(env, &rmtaddr, &port);
|
||||
family = getInetAddress_family(env, iaObj) == java_net_InetAddress_IPv4 ?
|
||||
AF_INET : AF_INET6;
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
if (family == AF_INET) { /* this API can't handle IPV6 addresses */
|
||||
int address = getInetAddress_addr(env, iaObj);
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
setInetAddress_addr(env, addressObj, address);
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
}
|
||||
return port;
|
||||
}
|
||||
|
@ -1014,6 +1017,7 @@ static void mcast_set_if_by_if_v4(JNIEnv *env, jobject this, int fd, jobject val
|
|||
struct in_addr in;
|
||||
jobjectArray addrArray;
|
||||
jsize len;
|
||||
jint family;
|
||||
jobject addr;
|
||||
int i;
|
||||
|
||||
|
@ -1044,8 +1048,11 @@ static void mcast_set_if_by_if_v4(JNIEnv *env, jobject this, int fd, jobject val
|
|||
in.s_addr = 0;
|
||||
for (i = 0; i < len; i++) {
|
||||
addr = (*env)->GetObjectArrayElement(env, addrArray, i);
|
||||
if (getInetAddress_family(env, addr) == java_net_InetAddress_IPv4) {
|
||||
family = getInetAddress_family(env, addr);
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
if (family == java_net_InetAddress_IPv4) {
|
||||
in.s_addr = htonl(getInetAddress_addr(env, addr));
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1095,7 +1102,7 @@ static void mcast_set_if_by_addr_v4(JNIEnv *env, jobject this, int fd, jobject v
|
|||
struct in_addr in;
|
||||
|
||||
in.s_addr = htonl( getInetAddress_addr(env, value) );
|
||||
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF,
|
||||
(const char*)&in, sizeof(in)) < 0) {
|
||||
JNU_ThrowByNameWithMessageAndLastError
|
||||
|
@ -1458,6 +1465,7 @@ jobject getMulticastInterface(JNIEnv *env, jobject this, int fd, jint opt) {
|
|||
CHECK_NULL_RETURN(addr, NULL);
|
||||
|
||||
setInetAddress_addr(env, addr, ntohl(in.s_addr));
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, NULL);
|
||||
|
||||
/*
|
||||
* For IP_MULTICAST_IF return InetAddress
|
||||
|
@ -1890,6 +1898,7 @@ static void mcast_join_leave(JNIEnv *env, jobject this,
|
|||
|
||||
jobject fdObj = (*env)->GetObjectField(env, this, pdsi_fdID);
|
||||
jint fd;
|
||||
jint family;
|
||||
jint ipv6_join_leave;
|
||||
|
||||
if (IS_NULL(fdObj)) {
|
||||
|
@ -1910,7 +1919,9 @@ static void mcast_join_leave(JNIEnv *env, jobject this,
|
|||
ipv6_join_leave = ipv6_available();
|
||||
|
||||
#ifdef __linux__
|
||||
if (getInetAddress_family(env, iaObj) == java_net_InetAddress_IPv4) {
|
||||
family = getInetAddress_family(env, iaObj);
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
if (family == java_net_InetAddress_IPv4) {
|
||||
ipv6_join_leave = JNI_FALSE;
|
||||
}
|
||||
#endif
|
||||
|
@ -1951,6 +1962,7 @@ static void mcast_join_leave(JNIEnv *env, jobject this,
|
|||
}
|
||||
|
||||
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
mname.imr_address.s_addr = 0;
|
||||
mname.imr_ifindex = (*env)->GetIntField(env, niObj, ni_indexID);
|
||||
mname_len = sizeof(struct ip_mreqn);
|
||||
|
@ -1969,11 +1981,14 @@ static void mcast_join_leave(JNIEnv *env, jobject this,
|
|||
addr = (*env)->GetObjectArrayElement(env, addrArray, 0);
|
||||
|
||||
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
#ifdef __linux__
|
||||
mname.imr_address.s_addr = htonl(getInetAddress_addr(env, addr));
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
mname.imr_ifindex = 0;
|
||||
#else
|
||||
mname.imr_interface.s_addr = htonl(getInetAddress_addr(env, addr));
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
#endif
|
||||
mname_len = sizeof(struct ip_mreq);
|
||||
}
|
||||
|
@ -2009,6 +2024,7 @@ static void mcast_join_leave(JNIEnv *env, jobject this,
|
|||
}
|
||||
|
||||
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
mname.imr_address.s_addr = 0 ;
|
||||
mname.imr_ifindex = index;
|
||||
mname_len = sizeof(struct ip_mreqn);
|
||||
|
@ -2031,6 +2047,7 @@ static void mcast_join_leave(JNIEnv *env, jobject this,
|
|||
mname.imr_interface.s_addr = in.s_addr;
|
||||
#endif
|
||||
mname.imr_multiaddr.s_addr = htonl(getInetAddress_addr(env, iaObj));
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
mname_len = sizeof(struct ip_mreq);
|
||||
}
|
||||
}
|
||||
|
@ -2097,10 +2114,11 @@ static void mcast_join_leave(JNIEnv *env, jobject this,
|
|||
jint address;
|
||||
family = getInetAddress_family(env, iaObj) == java_net_InetAddress_IPv4 ?
|
||||
AF_INET : AF_INET6;
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
if (family == AF_INET) { /* will convert to IPv4-mapped address */
|
||||
memset((char *) caddr, 0, 16);
|
||||
address = getInetAddress_addr(env, iaObj);
|
||||
|
||||
JNU_CHECK_EXCEPTION(env);
|
||||
caddr[10] = 0xff;
|
||||
caddr[11] = 0xff;
|
||||
|
||||
|
|
|
@ -764,6 +764,7 @@ NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port,
|
|||
jboolean v4MappedAddress)
|
||||
{
|
||||
jint family = getInetAddress_family(env, iaObj);
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
memset((char *)sa, 0, sizeof(SOCKETADDRESS));
|
||||
|
||||
if (ipv6_available() &&
|
||||
|
@ -777,6 +778,7 @@ NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port,
|
|||
// convert to IPv4-mapped address
|
||||
memset((char *)caddr, 0, 16);
|
||||
address = getInetAddress_addr(env, iaObj);
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
if (address == INADDR_ANY) {
|
||||
/* we would always prefer IPv6 wildcard address
|
||||
* caddr[10] = 0xff;
|
||||
|
@ -871,6 +873,7 @@ NET_InetAddressToSockaddr(JNIEnv *env, jobject iaObj, int port,
|
|||
return -1;
|
||||
}
|
||||
address = getInetAddress_addr(env, iaObj);
|
||||
JNU_CHECK_EXCEPTION_RETURN(env, -1);
|
||||
sa->sa4.sin_port = htons(port);
|
||||
sa->sa4.sin_addr.s_addr = htonl(address);
|
||||
sa->sa4.sin_family = AF_INET;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue