/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#include <winsock2.h>
#include <WS2tcpip.h>
/* typedefs that were defined correctly for the first time
* in Nov. 2001 SDK, which we need to include here.
* Specifically, in6_addr and sockaddr_in6 (which is defined but
* not correctly). When moving to a later SDK remove following
* code between START and END
*/
/* --- START --- */
/* WIN64 already uses newer SDK */
#ifdef _WIN64
#else
#ifdef _MSC_VER
#else
#endif
#else
/* Retain this code a little longer to support building in
* old environments. _MSC_VER is defined as:
* 1200 for MSVC++ 6.0
* 1310 for Vc7
*/
struct in6_addr {
union {
} u;
};
/*
** Defines to match RFC 2553.
*/
#define _S6_un u
/*
** Defines for our implementation.
*/
/* IPv6 socket address structure, RFC 2553 */
struct SOCKADDR_IN6 {
};
/* Error codes from getaddrinfo() */
//#define EAI_NODATA WSANO_DATA
/* Structure used in getaddrinfo() call */
typedef struct addrinfo {
/* Flags used in "hints" argument to getaddrinfo() */
/* IPv6 Multicasting definitions */
/* Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP */
typedef struct ipv6_mreq {
} IPV6_MREQ;
WS2TCPIP_INLINE int
{
return (a->s6_bytes[0] == 0xff);
}
WS2TCPIP_INLINE int
{
return (a->s6_bytes[0] == 0xfe
}
/* Flags for getnameinfo() */
#define IN6_IS_ADDR_V4MAPPED(a) \
/* --- END --- */
#endif /* end 'else older build environment' */
#endif
typedef
int
);
typedef
void
);
typedef
int
);
#endif
/* used to disable connection reset messages on Windows XP */
#ifndef SIO_UDP_CONNRESET
#endif
#ifndef IN6_IS_ADDR_ANY
#define IN6_IS_ADDR_ANY(a) \
#endif
#ifndef IPV6_V6ONLY
#endif
#include "java_io_FileDescriptor.h"
#include "java_net_SocketOptions.h"
/* true if SO_RCVTIMEO is supported by underlying provider */
extern jboolean isRcvTimeoutSupported;
/*
* Return default Type Of Service
*/
int NET_GetDefaultTOS(void);
typedef union {
/*
* passed to NET_BindV6. Both ipv4_fd and ipv6_fd must be created and unbound
* sockets. On return they may refer to different sockets.
*/
struct ipv6bind {
};
#define SOCKETADDRESS_LEN(X) \
sizeof(struct sockaddr_in))
} else { \
} \
}
#define SET_PORT(X,Y) { \
} else { \
} \
}
#define IS_LOOPBACK_ADDRESS(x) ( \
(IN6ADDR_ISLOOPBACK (x)) \
)
const char *defaultDetail);
/*
* differs from NET_Timeout() as follows:
*
* If timeout = -1, it blocks forever.
*
* returns 1 or 2 depending if only one or both sockets
* fire at same time.
*
* *fdret is (one of) the active fds. If both sockets
* fire at same time, *fd == fd always.
*/
/* XP versions of the native routines */