mirror of https://github.com/c-ares/c-ares.git
Provide winsock iphlpapi alternative definitions to prevent compilation failures when using a variety of winsock header implementations.pull/6/head
parent
6518b56a5e
commit
ef5390e6bb
5 changed files with 224 additions and 5 deletions
@ -0,0 +1,217 @@ |
||||
#ifndef HEADER_CARES_IPHLPAPI_H |
||||
#define HEADER_CARES_IPHLPAPI_H |
||||
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
* Copyright (C) 2004 - 2011 by Daniel Stenberg et al |
||||
* |
||||
* Permission to use, copy, modify, and distribute this |
||||
* software and its documentation for any purpose and without |
||||
* fee is hereby granted, provided that the above copyright |
||||
* notice appear in all copies and that both that copyright |
||||
* notice and this permission notice appear in supporting |
||||
* documentation, and that the name of M.I.T. not be used in |
||||
* advertising or publicity pertaining to distribution of the |
||||
* software without specific, written prior permission. |
||||
* M.I.T. makes no representations about the suitability of |
||||
* this software for any purpose. It is provided "as is" |
||||
* without express or implied warranty. |
||||
*/ |
||||
|
||||
#if defined(USE_WINSOCK) |
||||
|
||||
#ifndef INET_ADDRSTRLEN |
||||
#define INET_ADDRSTRLEN 22 |
||||
#endif |
||||
|
||||
#ifndef INET6_ADDRSTRLEN |
||||
#define INET6_ADDRSTRLEN 65 |
||||
#endif |
||||
|
||||
/* ---------------------------------------------------------- */ |
||||
#if !defined(__CSADDR_DEFINED__) && !defined(__CSADDR_T_DEFINED) |
||||
/* ---------------------------------------------------------- */ |
||||
|
||||
typedef struct _SOCKET_ADDRESS { |
||||
LPSOCKADDR lpSockaddr; |
||||
INT iSockaddrLength; |
||||
} SOCKET_ADDRESS, *PSOCKET_ADDRESS; |
||||
|
||||
typedef struct _CSADDR_INFO { |
||||
SOCKET_ADDRESS LocalAddr; |
||||
SOCKET_ADDRESS RemoteAddr; |
||||
INT iSocketType; |
||||
INT iProtocol; |
||||
} CSADDR_INFO, *PCSADDR_INFO; |
||||
|
||||
/* --------------------------------------------------- */ |
||||
#endif /* ! __CSADDR_DEFINED__ && ! __CSADDR_T_DEFINED */ |
||||
/* --------------------------------------------------- */ |
||||
|
||||
/* ------------------------------- */ |
||||
#if !defined(IP_ADAPTER_DDNS_ENABLED) |
||||
/* ------------------------------- */ |
||||
|
||||
#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x0001 |
||||
#define IP_ADAPTER_ADDRESS_TRANSIENT 0x0002 |
||||
|
||||
#define IP_ADAPTER_DDNS_ENABLED 0x0001 |
||||
#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x0002 |
||||
#define IP_ADAPTER_DHCP_ENABLED 0x0004 |
||||
#define IP_ADAPTER_RECEIVE_ONLY 0x0008 |
||||
#define IP_ADAPTER_NO_MULTICAST 0x0010 |
||||
#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x0020 |
||||
|
||||
#define GAA_FLAG_SKIP_UNICAST 0x0001 |
||||
#define GAA_FLAG_SKIP_ANYCAST 0x0002 |
||||
#define GAA_FLAG_SKIP_MULTICAST 0x0004 |
||||
#define GAA_FLAG_SKIP_DNS_SERVER 0x0008 |
||||
#define GAA_FLAG_INCLUDE_PREFIX 0x0010 |
||||
#define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020 |
||||
|
||||
typedef enum { |
||||
IpPrefixOriginOther = 0, |
||||
IpPrefixOriginManual, |
||||
IpPrefixOriginWellKnown, |
||||
IpPrefixOriginDhcp, |
||||
IpPrefixOriginRouterAdvertisement, |
||||
} IP_PREFIX_ORIGIN; |
||||
|
||||
typedef enum { |
||||
IpSuffixOriginOther = 0, |
||||
IpSuffixOriginManual, |
||||
IpSuffixOriginWellKnown, |
||||
IpSuffixOriginDhcp, |
||||
IpSuffixOriginLinkLayerAddress, |
||||
IpSuffixOriginRandom, |
||||
} IP_SUFFIX_ORIGIN; |
||||
|
||||
typedef enum { |
||||
IpDadStateInvalid = 0, |
||||
IpDadStateTentative, |
||||
IpDadStateDuplicate, |
||||
IpDadStateDeprecated, |
||||
IpDadStatePreferred, |
||||
} IP_DAD_STATE; |
||||
|
||||
typedef enum { |
||||
IfOperStatusUp = 1, |
||||
IfOperStatusDown, |
||||
IfOperStatusTesting, |
||||
IfOperStatusUnknown, |
||||
IfOperStatusDormant, |
||||
IfOperStatusNotPresent, |
||||
IfOperStatusLowerLayerDown |
||||
} IF_OPER_STATUS; |
||||
|
||||
typedef enum { |
||||
ScopeLevelInterface = 0x0001, |
||||
ScopeLevelLink = 0x0002, |
||||
ScopeLevelSubnet = 0x0003, |
||||
ScopeLevelAdmin = 0x0004, |
||||
ScopeLevelSite = 0x0005, |
||||
ScopeLevelOrganization = 0x0008, |
||||
ScopeLevelGlobal = 0x000E |
||||
} SCOPE_LEVEL; |
||||
|
||||
typedef struct _IP_ADAPTER_UNICAST_ADDRESS { |
||||
union { |
||||
ULONGLONG Alignment; |
||||
struct { |
||||
ULONG Length; |
||||
DWORD Flags; |
||||
}; |
||||
}; |
||||
struct _IP_ADAPTER_UNICAST_ADDRESS *Next; |
||||
SOCKET_ADDRESS Address; |
||||
IP_PREFIX_ORIGIN PrefixOrigin; |
||||
IP_SUFFIX_ORIGIN SuffixOrigin; |
||||
IP_DAD_STATE DadState; |
||||
ULONG ValidLifetime; |
||||
ULONG PreferredLifetime; |
||||
ULONG LeaseLifetime; |
||||
} IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS; |
||||
|
||||
typedef struct _IP_ADAPTER_ANYCAST_ADDRESS { |
||||
union { |
||||
ULONGLONG Alignment; |
||||
struct { |
||||
ULONG Length; |
||||
DWORD Flags; |
||||
}; |
||||
}; |
||||
struct _IP_ADAPTER_ANYCAST_ADDRESS *Next; |
||||
SOCKET_ADDRESS Address; |
||||
} IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS; |
||||
|
||||
typedef struct _IP_ADAPTER_MULTICAST_ADDRESS { |
||||
union { |
||||
ULONGLONG Alignment; |
||||
struct { |
||||
ULONG Length; |
||||
DWORD Flags; |
||||
}; |
||||
}; |
||||
struct _IP_ADAPTER_MULTICAST_ADDRESS *Next; |
||||
SOCKET_ADDRESS Address; |
||||
} IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS; |
||||
|
||||
typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS { |
||||
union { |
||||
ULONGLONG Alignment; |
||||
struct { |
||||
ULONG Length; |
||||
DWORD Reserved; |
||||
}; |
||||
}; |
||||
struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next; |
||||
SOCKET_ADDRESS Address; |
||||
} IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS; |
||||
|
||||
typedef struct _IP_ADAPTER_PREFIX { |
||||
union { |
||||
ULONGLONG Alignment; |
||||
struct { |
||||
ULONG Length; |
||||
DWORD Flags; |
||||
}; |
||||
}; |
||||
struct _IP_ADAPTER_PREFIX *Next; |
||||
SOCKET_ADDRESS Address; |
||||
ULONG PrefixLength; |
||||
} IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX; |
||||
|
||||
typedef struct _IP_ADAPTER_ADDRESSES { |
||||
union { |
||||
ULONGLONG Alignment; |
||||
struct { |
||||
ULONG Length; |
||||
DWORD IfIndex; |
||||
}; |
||||
}; |
||||
struct _IP_ADAPTER_ADDRESSES *Next; |
||||
PCHAR AdapterName; |
||||
PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress; |
||||
PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress; |
||||
PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress; |
||||
PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress; |
||||
PWCHAR DnsSuffix; |
||||
PWCHAR Description; |
||||
PWCHAR FriendlyName; |
||||
BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH]; |
||||
DWORD PhysicalAddressLength; |
||||
DWORD Flags; |
||||
DWORD Mtu; |
||||
DWORD IfType; |
||||
IF_OPER_STATUS OperStatus; |
||||
DWORD Ipv6IfIndex; |
||||
DWORD ZoneIndices[16]; |
||||
PIP_ADAPTER_PREFIX FirstPrefix; |
||||
} IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES; |
||||
|
||||
/* -------------------------------- */ |
||||
#endif /* ! IP_ADAPTER_DDNS_ENABLED */ |
||||
/* -------------------------------- */ |
||||
|
||||
#endif /* USE_WINSOCK */ |
||||
|
||||
#endif /* HEADER_CARES_IPHLPAPI_H */ |
Loading…
Reference in new issue