summaryrefslogtreecommitdiff
path: root/ares_iphlpapi.h
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2011-05-20 16:43:25 +0200
committerYang Tse <yangsita@gmail.com>2011-05-20 16:43:25 +0200
commitef5390e6bb9c20199d11bf33146764900256f961 (patch)
tree8905757c4ed91e4bdd6ece2f94ecda598fc233bb /ares_iphlpapi.h
parent6518b56a5e2bc9e39d720f17fa7dd322a28dc33c (diff)
downloadc-ares-ef5390e6bb9c20199d11bf33146764900256f961.tar.gz
c-ares-ef5390e6bb9c20199d11bf33146764900256f961.tar.bz2
c-ares-ef5390e6bb9c20199d11bf33146764900256f961.zip
winsock: compilation fixes
Provide winsock iphlpapi alternative definitions to prevent compilation failures when using a variety of winsock header implementations.
Diffstat (limited to 'ares_iphlpapi.h')
-rw-r--r--ares_iphlpapi.h217
1 files changed, 217 insertions, 0 deletions
diff --git a/ares_iphlpapi.h b/ares_iphlpapi.h
new file mode 100644
index 0000000..5d1ebc6
--- /dev/null
+++ b/ares_iphlpapi.h
@@ -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 */