mirror of
https://git.code.sf.net/p/mingw-w64/mingw-w64
synced 2024-11-23 09:54:39 +08:00
6e6a38976b
Required for WindowsSocketOptions.c in openjdk Signed-off-by: Biswapriyo Nath <nathbappai@gmail.com> Signed-off-by: LIU Hao <lh_mouse@126.com>
284 lines
7.6 KiB
C
284 lines
7.6 KiB
C
/**
|
|
* This file is part of the mingw-w64 runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER within this package.
|
|
*/
|
|
#ifndef _WS2IPDEF_
|
|
#define _WS2IPDEF_
|
|
|
|
#include <_mingw_unicode.h>
|
|
#include <winapifamily.h>
|
|
|
|
#ifdef __LP64__
|
|
#pragma push_macro("u_long")
|
|
#undef u_long
|
|
#define u_long __ms_u_long
|
|
#endif
|
|
|
|
#include <in6addr.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* options at IPPROTO_IP level */
|
|
#define IP_OPTIONS 1
|
|
#define IP_HDRINCL 2
|
|
#define IP_TOS 3
|
|
#define IP_TTL 4
|
|
#define IP_MULTICAST_IF 9
|
|
#define IP_MULTICAST_TTL 10
|
|
#define IP_MULTICAST_LOOP 11
|
|
#define IP_ADD_MEMBERSHIP 12
|
|
#define IP_DROP_MEMBERSHIP 13
|
|
#define IP_DONTFRAGMENT 14
|
|
#define IP_ADD_SOURCE_MEMBERSHIP 15
|
|
#define IP_DROP_SOURCE_MEMBERSHIP 16
|
|
#define IP_BLOCK_SOURCE 17
|
|
#define IP_UNBLOCK_SOURCE 18
|
|
#define IP_PKTINFO 19
|
|
#define IP_HOPLIMIT 21
|
|
#define IP_RECVTTL 21
|
|
#define IP_RECEIVE_BROADCAST 22
|
|
#define IP_RECVIF 24
|
|
#define IP_RECVDSTADDR 25
|
|
#define IP_IFLIST 28
|
|
#define IP_ADD_IFLIST 29
|
|
#define IP_DEL_IFLIST 30
|
|
#define IP_UNICAST_IF 31
|
|
#define IP_RTHDR 32
|
|
#define IP_GET_IFLIST 33
|
|
#define IP_RECVRTHDR 38
|
|
#define IP_TCLASS 39
|
|
#define IP_RECVTCLASS 40
|
|
#define IP_RECVTOS 40
|
|
#define IP_ORIGINAL_ARRIVAL_IF 47
|
|
#define IP_ECN 50
|
|
#define IP_PKTINFO_EX 51
|
|
#define IP_WFP_REDIRECT_RECORDS 60
|
|
#define IP_WFP_REDIRECT_CONTEXT 70
|
|
#define IP_MTU_DISCOVER 71
|
|
#define IP_MTU 73
|
|
#define IP_NRT_INTERFACE 74
|
|
#define IP_RECVERR 75
|
|
#define IP_USER_MTU 76
|
|
|
|
#define IP_UNSPECIFIED_TYPE_OF_SERVICE -1
|
|
#define IP_UNSPECIFIED_USER_MTU MAXULONG
|
|
|
|
#define IPV6_ADDRESS_BITS RTL_BITS_OF(IN6_ADDR)
|
|
|
|
/* options at IPPROTO_IPV6 level */
|
|
#define IPV6_HOPOPTS 1
|
|
#define IPV6_HDRINCL 2
|
|
#define IPV6_UNICAST_HOPS 4
|
|
#define IPV6_MULTICAST_IF 9
|
|
#define IPV6_MULTICAST_HOPS 10
|
|
#define IPV6_MULTICAST_LOOP 11
|
|
#define IPV6_ADD_MEMBERSHIP 12
|
|
#define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP
|
|
#define IPV6_DROP_MEMBERSHIP 13
|
|
#define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP
|
|
#define IPV6_DONTFRAG 14
|
|
#define IPV6_PKTINFO 19
|
|
#define IPV6_HOPLIMIT 21
|
|
#define IPV6_PROTECTION_LEVEL 23
|
|
#define IPV6_RECVIF 24
|
|
#define IPV6_RECVDSTADDR 25
|
|
#define IPV6_CHECKSUM 26
|
|
#define IPV6_V6ONLY 27
|
|
#define IPV6_IFLIST 28
|
|
#define IPV6_ADD_IFLIST 29
|
|
#define IPV6_DEL_IFLIST 30
|
|
#define IPV6_UNICAST_IF 31
|
|
#define IPV6_RTHDR 32
|
|
#define IPV6_GET_IFLIST 33
|
|
#define IPV6_RECVRTHDR 38
|
|
#define IPV6_TCLASS 39
|
|
#define IPV6_RECVTCLASS 40
|
|
#define IPV6_ECN 50
|
|
#define IPV6_PKTINFO_EX 51
|
|
#define IPV6_WFP_REDIRECT_RECORDS 60
|
|
#define IPV6_WFP_REDIRECT_CONTEXT 70
|
|
#define IPV6_MTU_DISCOVER 71
|
|
#define IPV6_MTU 72
|
|
#define IPV6_NRT_INTERFACE 74
|
|
#define IPV6_RECVERR 75
|
|
#define IPV6_USER_MTU 76
|
|
|
|
#define IP_UNSPECIFIED_HOP_LIMIT -1
|
|
|
|
#define IP_PROTECTION_LEVEL IPV6_PROTECTION_LEVEL
|
|
|
|
#define PROTECTION_LEVEL_UNRESTRICTED 10
|
|
#define PROTECTION_LEVEL_EDGERESTRICTED 20
|
|
#define PROTECTION_LEVEL_RESTRICTED 30
|
|
|
|
#if NTDDI_VERSION < NTDDI_VISTA
|
|
#define PROTECTION_LEVEL_DEFAULT PROTECTION_LEVEL_EDGERESTRICTED
|
|
#else
|
|
#define PROTECTION_LEVEL_DEFAULT ((UINT)-1)
|
|
#endif
|
|
|
|
typedef struct ipv6_mreq {
|
|
struct in6_addr ipv6mr_multiaddr;
|
|
unsigned int ipv6mr_interface;
|
|
} IPV6_MREQ;
|
|
|
|
struct sockaddr_in6_old {
|
|
short sin6_family;
|
|
u_short sin6_port;
|
|
u_long sin6_flowinfo;
|
|
struct in6_addr sin6_addr;
|
|
};
|
|
|
|
typedef union sockaddr_gen {
|
|
struct sockaddr Address;
|
|
struct sockaddr_in AddressIn;
|
|
struct sockaddr_in6_old AddressIn6;
|
|
} sockaddr_gen;
|
|
|
|
struct sockaddr_in6 {
|
|
short sin6_family;
|
|
u_short sin6_port;
|
|
u_long sin6_flowinfo;
|
|
struct in6_addr sin6_addr;
|
|
__C89_NAMELESS union {
|
|
u_long sin6_scope_id;
|
|
SCOPE_ID sin6_scope_struct;
|
|
};
|
|
};
|
|
|
|
typedef struct sockaddr_in6 SOCKADDR_IN6;
|
|
typedef struct sockaddr_in6 *PSOCKADDR_IN6;
|
|
typedef struct sockaddr_in6 *LPSOCKADDR_IN6;
|
|
|
|
typedef struct _INTERFACE_INFO {
|
|
u_long iiFlags;
|
|
sockaddr_gen iiAddress;
|
|
sockaddr_gen iiBroadcastAddress;
|
|
sockaddr_gen iiNetmask;
|
|
} INTERFACE_INFO,*LPINTERFACE_INFO;
|
|
|
|
typedef struct _INTERFACE_INFO_EX {
|
|
u_long iiFlags;
|
|
SOCKET_ADDRESS iiAddress;
|
|
SOCKET_ADDRESS iiBroadcastAddress;
|
|
SOCKET_ADDRESS iiNetmask;
|
|
} INTERFACE_INFO_EX, *LPINTERFACE_INFO_EX;
|
|
|
|
#define IFF_UP 0x00000001
|
|
#define IFF_BROADCAST 0x00000002
|
|
#define IFF_LOOPBACK 0x00000004
|
|
#define IFF_POINTTOPOINT 0x00000008
|
|
#define IFF_MULTICAST 0x00000010
|
|
|
|
typedef enum _PMTUD_STATE {
|
|
IP_PMTUDISC_NOT_SET,
|
|
IP_PMTUDISC_DO,
|
|
IP_PMTUDISC_DONT,
|
|
IP_PMTUDISC_PROBE,
|
|
IP_PMTUDISC_MAX
|
|
} PMTUD_STATE, *PPMTUD_STATE;
|
|
|
|
#define MCAST_JOIN_GROUP 41
|
|
#define MCAST_LEAVE_GROUP 42
|
|
#define MCAST_BLOCK_SOURCE 43
|
|
#define MCAST_UNBLOCK_SOURCE 44
|
|
#define MCAST_JOIN_SOURCE_GROUP 45
|
|
#define MCAST_LEAVE_SOURCE_GROUP 46
|
|
|
|
typedef enum _MULTICAST_MODE_TYPE {
|
|
MCAST_INCLUDE = 0,
|
|
MCAST_EXCLUDE
|
|
} MULTICAST_MODE_TYPE;
|
|
|
|
typedef struct ip_mreq_source {
|
|
IN_ADDR imr_multiaddr;
|
|
IN_ADDR imr_sourceaddr;
|
|
IN_ADDR imr_interface;
|
|
} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;
|
|
|
|
typedef struct ip_msfilter {
|
|
IN_ADDR imsf_multiaddr;
|
|
IN_ADDR imsf_interface;
|
|
MULTICAST_MODE_TYPE imsf_fmode;
|
|
ULONG imsf_numsrc;
|
|
IN_ADDR imsf_slist[1];
|
|
} IP_MSFILTER, *PIP_MSFILTER;
|
|
|
|
#define IP_MSFILTER_SIZE(NumSources) (sizeof(IP_MSFILTER) - sizeof(IN_ADDR) + (NumSources) * sizeof(IN_ADDR))
|
|
|
|
typedef struct _sockaddr_in6_pair {
|
|
PSOCKADDR_IN6 SourceAddress;
|
|
PSOCKADDR_IN6 DestinationAddress;
|
|
} SOCKADDR_IN6_PAIR, *PSOCKADDR_IN6_PAIR;
|
|
|
|
typedef union _SOCKADDR_INET {
|
|
SOCKADDR_IN Ipv4;
|
|
SOCKADDR_IN6 Ipv6;
|
|
ADDRESS_FAMILY si_family;
|
|
} SOCKADDR_INET, *PSOCKADDR_INET;
|
|
|
|
typedef struct group_filter {
|
|
ULONG gf_interface;
|
|
SOCKADDR_STORAGE gf_group;
|
|
MULTICAST_MODE_TYPE gf_fmode;
|
|
ULONG gf_numsrc;
|
|
SOCKADDR_STORAGE gf_slist[1];
|
|
} GROUP_FILTER, *PGROUP_FILTER;
|
|
|
|
typedef struct group_req {
|
|
ULONG gr_interface;
|
|
SOCKADDR_STORAGE gr_group;
|
|
} GROUP_REQ, *PGROUP_REQ;
|
|
|
|
typedef struct group_source_req {
|
|
ULONG gsr_interface;
|
|
SOCKADDR_STORAGE gsr_group;
|
|
SOCKADDR_STORAGE gsr_source;
|
|
} GROUP_SOURCE_REQ, *PGROUP_SOURCE_REQ;
|
|
|
|
#define WS2TCPIP_INLINE __CRT_INLINE
|
|
|
|
int IN6_ADDR_EQUAL(const struct in6_addr *,const struct in6_addr *);
|
|
WS2TCPIP_INLINE int IN6_ADDR_EQUAL(const struct in6_addr *a, const struct in6_addr *b) {
|
|
return !memcmp(a, b, sizeof(struct in6_addr));
|
|
}
|
|
|
|
#define IN6_ARE_ADDR_EQUAL IN6_ADDR_EQUAL
|
|
|
|
#define TCP_OFFLOAD_NO_PREFERENCE 0
|
|
#define TCP_OFFLOAD_NOT_PREFERRED 1
|
|
#define TCP_OFFLOAD_PREFERRED 2
|
|
|
|
/* TCP_NODELAY is in winsock.h and winsock2.h */
|
|
#define TCP_EXPEDITED_1122 0x0002
|
|
#define TCP_KEEPALIVE 3
|
|
#define TCP_MAXSEG 4
|
|
#define TCP_MAXRT 5
|
|
#define TCP_STDURG 6
|
|
#define TCP_NOURG 7
|
|
#define TCP_ATMARK 8
|
|
#define TCP_NOSYNRETRIES 9
|
|
#define TCP_TIMESTAMPS 10
|
|
#define TCP_OFFLOAD_PREFERENCE 11
|
|
#define TCP_CONGESTION_ALGORITHM 12
|
|
#define TCP_DELAY_FIN_ACK 13
|
|
#define TCP_MAXRTMS 14
|
|
#define TCP_FASTOPEN 15
|
|
#define TCP_KEEPCNT 16
|
|
#define TCP_KEEPIDLE TCP_KEEPALIVE
|
|
#define TCP_KEEPINTVL 17
|
|
#define TCP_FAIL_CONNECT_ON_ICMP_ERROR 18
|
|
#define TCP_ICMP_ERROR_INFO 19
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#ifdef __LP64__
|
|
#pragma pop_macro("u_long")
|
|
#endif
|
|
|
|
#endif /*_WS2IPDEF_ */
|