8174834: nio (ch): Remove #ifdef AF_INET6 guards in native coding
Reviewed-by: alanb, chegar
This commit is contained in:
parent
d6fbebf0bf
commit
a6cc06162b
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -90,29 +90,16 @@ Java_sun_nio_ch_DatagramChannelImpl_disconnect0(JNIEnv *env, jobject this,
|
|||||||
#if defined(__solaris__)
|
#if defined(__solaris__)
|
||||||
rv = connect(fd, 0, 0);
|
rv = connect(fd, 0, 0);
|
||||||
#else
|
#else
|
||||||
int len;
|
|
||||||
SOCKETADDRESS sa;
|
SOCKETADDRESS sa;
|
||||||
|
socklen_t len = isIPv6 ? sizeof(struct sockaddr_in6) :
|
||||||
|
sizeof(struct sockaddr_in);
|
||||||
|
|
||||||
memset(&sa, 0, sizeof(sa));
|
memset(&sa, 0, sizeof(sa));
|
||||||
|
|
||||||
#ifdef AF_INET6
|
|
||||||
if (isIPv6) {
|
|
||||||
#if defined(_ALLBSD_SOURCE)
|
#if defined(_ALLBSD_SOURCE)
|
||||||
sa.sa6.sin6_family = AF_INET6;
|
sa.sa.sa_family = isIPv6 ? AF_INET6 : AF_INET;
|
||||||
#else
|
#else
|
||||||
sa.sa6.sin6_family = AF_UNSPEC;
|
sa.sa.sa_family = AF_UNSPEC;
|
||||||
#endif
|
#endif
|
||||||
len = sizeof(struct sockaddr_in6);
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
#if defined(_ALLBSD_SOURCE)
|
|
||||||
sa.sa4.sin_family = AF_INET;
|
|
||||||
#else
|
|
||||||
sa.sa4.sin_family = AF_UNSPEC;
|
|
||||||
#endif
|
|
||||||
len = sizeof(struct sockaddr_in);
|
|
||||||
}
|
|
||||||
|
|
||||||
rv = connect(fd, &sa.sa, len);
|
rv = connect(fd, &sa.sa, len);
|
||||||
|
|
||||||
@ -126,8 +113,9 @@ Java_sun_nio_ch_DatagramChannelImpl_disconnect0(JNIEnv *env, jobject this,
|
|||||||
*/
|
*/
|
||||||
if (rv < 0 && errno == EAFNOSUPPORT)
|
if (rv < 0 && errno == EAFNOSUPPORT)
|
||||||
rv = errno = 0;
|
rv = errno = 0;
|
||||||
#endif
|
#endif // defined(_ALLBSD_SOURCE) || defined(_AIX)
|
||||||
#endif
|
|
||||||
|
#endif // defined(__solaris__)
|
||||||
|
|
||||||
if (rv < 0)
|
if (rv < 0)
|
||||||
handleSocketError(env, errno);
|
handleSocketError(env, errno);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -37,14 +37,8 @@
|
|||||||
|
|
||||||
#include "sun_nio_ch_InheritedChannel.h"
|
#include "sun_nio_ch_InheritedChannel.h"
|
||||||
|
|
||||||
static int matchFamily(struct sockaddr *sa) {
|
static int matchFamily(SOCKETADDRESS *sa) {
|
||||||
int family = sa->sa_family;
|
return (sa->sa.sa_family == (ipv6_available() ? AF_INET6 : AF_INET));
|
||||||
#ifdef AF_INET6
|
|
||||||
if (ipv6_available()) {
|
|
||||||
return (family == AF_INET6);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return (family == AF_INET);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
@ -63,7 +57,7 @@ Java_sun_nio_ch_InheritedChannel_peerAddress0(JNIEnv *env, jclass cla, jint fd)
|
|||||||
jint remote_port;
|
jint remote_port;
|
||||||
|
|
||||||
if (getpeername(fd, &sa.sa, &len) == 0) {
|
if (getpeername(fd, &sa.sa, &len) == 0) {
|
||||||
if (matchFamily(&sa.sa)) {
|
if (matchFamily(&sa)) {
|
||||||
remote_ia = NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port);
|
remote_ia = NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,7 +65,6 @@ Java_sun_nio_ch_InheritedChannel_peerAddress0(JNIEnv *env, jclass cla, jint fd)
|
|||||||
return remote_ia;
|
return remote_ia;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL
|
JNIEXPORT jint JNICALL
|
||||||
Java_sun_nio_ch_InheritedChannel_peerPort0(JNIEnv *env, jclass cla, jint fd)
|
Java_sun_nio_ch_InheritedChannel_peerPort0(JNIEnv *env, jclass cla, jint fd)
|
||||||
{
|
{
|
||||||
@ -80,7 +73,7 @@ Java_sun_nio_ch_InheritedChannel_peerPort0(JNIEnv *env, jclass cla, jint fd)
|
|||||||
jint remote_port = -1;
|
jint remote_port = -1;
|
||||||
|
|
||||||
if (getpeername(fd, &sa.sa, &len) == 0) {
|
if (getpeername(fd, &sa.sa, &len) == 0) {
|
||||||
if (matchFamily(&sa.sa)) {
|
if (matchFamily(&sa)) {
|
||||||
NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port);
|
NET_SockaddrToInetAddress(env, &sa, (int *)&remote_port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -92,7 +85,7 @@ JNIEXPORT jint JNICALL
|
|||||||
Java_sun_nio_ch_InheritedChannel_soType0(JNIEnv *env, jclass cla, jint fd)
|
Java_sun_nio_ch_InheritedChannel_soType0(JNIEnv *env, jclass cla, jint fd)
|
||||||
{
|
{
|
||||||
int sotype;
|
int sotype;
|
||||||
socklen_t arglen=sizeof(sotype);
|
socklen_t arglen = sizeof(sotype);
|
||||||
if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void *)&sotype, &arglen) == 0) {
|
if (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void *)&sotype, &arglen) == 0) {
|
||||||
if (sotype == SOCK_STREAM)
|
if (sotype == SOCK_STREAM)
|
||||||
return sun_nio_ch_InheritedChannel_SOCK_STREAM;
|
return sun_nio_ch_InheritedChannel_SOCK_STREAM;
|
||||||
@ -123,7 +116,7 @@ Java_sun_nio_ch_InheritedChannel_dup2(JNIEnv *env, jclass cla, jint fd, jint fd2
|
|||||||
JNIEXPORT jint JNICALL
|
JNIEXPORT jint JNICALL
|
||||||
Java_sun_nio_ch_InheritedChannel_open0(JNIEnv *env, jclass cla, jstring path, jint oflag)
|
Java_sun_nio_ch_InheritedChannel_open0(JNIEnv *env, jclass cla, jstring path, jint oflag)
|
||||||
{
|
{
|
||||||
const char* str;
|
const char *str;
|
||||||
int oflag_actual;
|
int oflag_actual;
|
||||||
|
|
||||||
/* convert to OS specific value */
|
/* convert to OS specific value */
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -101,23 +101,21 @@
|
|||||||
* Copy IPv6 group, interface index, and IPv6 source address
|
* Copy IPv6 group, interface index, and IPv6 source address
|
||||||
* into group_source_req structure.
|
* into group_source_req structure.
|
||||||
*/
|
*/
|
||||||
#ifdef AF_INET6
|
|
||||||
static void initGroupSourceReq(JNIEnv* env, jbyteArray group, jint index,
|
static void initGroupSourceReq(JNIEnv* env, jbyteArray group, jint index,
|
||||||
jbyteArray source, struct group_source_req* req)
|
jbyteArray source, struct group_source_req *req)
|
||||||
{
|
{
|
||||||
struct sockaddr_in6* sin6;
|
struct sockaddr_in6* sin6;
|
||||||
|
|
||||||
req->gsr_interface = (uint32_t)index;
|
req->gsr_interface = (uint32_t)index;
|
||||||
|
|
||||||
sin6 = (struct sockaddr_in6*)&(req->gsr_group);
|
sin6 = (struct sockaddr_in6 *)&(req->gsr_group);
|
||||||
sin6->sin6_family = AF_INET6;
|
sin6->sin6_family = AF_INET6;
|
||||||
COPY_INET6_ADDRESS(env, group, (jbyte*)&(sin6->sin6_addr));
|
COPY_INET6_ADDRESS(env, group, (jbyte *)&(sin6->sin6_addr));
|
||||||
|
|
||||||
sin6 = (struct sockaddr_in6*)&(req->gsr_source);
|
sin6 = (struct sockaddr_in6 *)&(req->gsr_source);
|
||||||
sin6->sin6_family = AF_INET6;
|
sin6->sin6_family = AF_INET6;
|
||||||
COPY_INET6_ADDRESS(env, source, (jbyte*)&(sin6->sin6_addr));
|
COPY_INET6_ADDRESS(env, source, (jbyte *)&(sin6->sin6_addr));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _AIX
|
#ifdef _AIX
|
||||||
|
|
||||||
@ -199,18 +197,13 @@ Java_sun_nio_ch_Net_socket0(JNIEnv *env, jclass cl, jboolean preferIPv6,
|
|||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
int type = (stream ? SOCK_STREAM : SOCK_DGRAM);
|
int type = (stream ? SOCK_STREAM : SOCK_DGRAM);
|
||||||
#ifdef AF_INET6
|
|
||||||
int domain = (ipv6_available() && preferIPv6) ? AF_INET6 : AF_INET;
|
int domain = (ipv6_available() && preferIPv6) ? AF_INET6 : AF_INET;
|
||||||
#else
|
|
||||||
int domain = AF_INET;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
fd = socket(domain, type, 0);
|
fd = socket(domain, type, 0);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
return handleSocketError(env, errno);
|
return handleSocketError(env, errno);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef AF_INET6
|
|
||||||
/* Disable IPV6_V6ONLY to ensure dual-socket support */
|
/* Disable IPV6_V6ONLY to ensure dual-socket support */
|
||||||
if (domain == AF_INET6) {
|
if (domain == AF_INET6) {
|
||||||
int arg = 0;
|
int arg = 0;
|
||||||
@ -223,7 +216,6 @@ Java_sun_nio_ch_Net_socket0(JNIEnv *env, jclass cl, jboolean preferIPv6,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (reuse) {
|
if (reuse) {
|
||||||
int arg = 1;
|
int arg = 1;
|
||||||
@ -250,9 +242,7 @@ Java_sun_nio_ch_Net_socket0(JNIEnv *env, jclass cl, jboolean preferIPv6,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__linux__) && defined(AF_INET6)
|
|
||||||
/* By default, Linux uses the route default */
|
/* By default, Linux uses the route default */
|
||||||
if (domain == AF_INET6 && type == SOCK_DGRAM) {
|
if (domain == AF_INET6 && type == SOCK_DGRAM) {
|
||||||
int arg = 1;
|
int arg = 1;
|
||||||
@ -569,7 +559,6 @@ JNIEXPORT jint JNICALL
|
|||||||
Java_sun_nio_ch_Net_joinOrDrop6(JNIEnv *env, jobject this, jboolean join, jobject fdo,
|
Java_sun_nio_ch_Net_joinOrDrop6(JNIEnv *env, jobject this, jboolean join, jobject fdo,
|
||||||
jbyteArray group, jint index, jbyteArray source)
|
jbyteArray group, jint index, jbyteArray source)
|
||||||
{
|
{
|
||||||
#ifdef AF_INET6
|
|
||||||
struct ipv6_mreq mreq6;
|
struct ipv6_mreq mreq6;
|
||||||
struct group_source_req req;
|
struct group_source_req req;
|
||||||
int opt, n, optlen;
|
int opt, n, optlen;
|
||||||
@ -600,21 +589,16 @@ Java_sun_nio_ch_Net_joinOrDrop6(JNIEnv *env, jobject this, jboolean join, jobjec
|
|||||||
handleSocketError(env, errno);
|
handleSocketError(env, errno);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
|
||||||
JNU_ThrowInternalError(env, "Should not get here");
|
|
||||||
return IOS_THROWN;
|
|
||||||
#endif /* AF_INET6 */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL
|
JNIEXPORT jint JNICALL
|
||||||
Java_sun_nio_ch_Net_blockOrUnblock6(JNIEnv *env, jobject this, jboolean block, jobject fdo,
|
Java_sun_nio_ch_Net_blockOrUnblock6(JNIEnv *env, jobject this, jboolean block, jobject fdo,
|
||||||
jbyteArray group, jint index, jbyteArray source)
|
jbyteArray group, jint index, jbyteArray source)
|
||||||
{
|
{
|
||||||
#ifdef AF_INET6
|
#ifdef __APPLE__
|
||||||
#ifdef __APPLE__
|
|
||||||
/* no IPv6 exclude-mode filtering for now */
|
/* no IPv6 exclude-mode filtering for now */
|
||||||
return IOS_UNAVAILABLE;
|
return IOS_UNAVAILABLE;
|
||||||
#else
|
#else
|
||||||
struct group_source_req req;
|
struct group_source_req req;
|
||||||
int n;
|
int n;
|
||||||
int opt = (block) ? MCAST_BLOCK_SOURCE : MCAST_UNBLOCK_SOURCE;
|
int opt = (block) ? MCAST_BLOCK_SOURCE : MCAST_UNBLOCK_SOURCE;
|
||||||
@ -629,10 +613,6 @@ Java_sun_nio_ch_Net_blockOrUnblock6(JNIEnv *env, jobject this, jboolean block, j
|
|||||||
handleSocketError(env, errno);
|
handleSocketError(env, errno);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
JNU_ThrowInternalError(env, "Should not get here");
|
|
||||||
return IOS_THROWN;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user