1 #ifndef HEADER_CARES_IPHLPAPI_H
2 #define HEADER_CARES_IPHLPAPI_H
4 /* Copyright 1998 by the Massachusetts Institute of Technology.
5 * Copyright (C) 2004 - 2011 by Daniel Stenberg et al
7 * Permission to use, copy, modify, and distribute this
8 * software and its documentation for any purpose and without
9 * fee is hereby granted, provided that the above copyright
10 * notice appear in all copies and that both that copyright
11 * notice and this permission notice appear in supporting
12 * documentation, and that the name of M.I.T. not be used in
13 * advertising or publicity pertaining to distribution of the
14 * software without specific, written prior permission.
15 * M.I.T. makes no representations about the suitability of
16 * this software for any purpose. It is provided "as is"
17 * without express or implied warranty.
20 #if defined(USE_WINSOCK)
22 #ifndef INET_ADDRSTRLEN
23 #define INET_ADDRSTRLEN 22
26 #ifndef INET6_ADDRSTRLEN
27 #define INET6_ADDRSTRLEN 65
30 /* ---------------------------------- */
31 #if !defined(_WS2DEF_) && \
32 !defined(__CSADDR_DEFINED__) && \
33 !defined(__CSADDR_T_DEFINED)
34 /* ---------------------------------- */
36 typedef struct _SOCKET_ADDRESS {
37 LPSOCKADDR lpSockaddr;
39 } SOCKET_ADDRESS, *PSOCKET_ADDRESS;
41 typedef struct _CSADDR_INFO {
42 SOCKET_ADDRESS LocalAddr;
43 SOCKET_ADDRESS RemoteAddr;
46 } CSADDR_INFO, *PCSADDR_INFO;
48 /* --------------------------------- */
49 #endif /* ! _WS2DEF_ && \ */
50 /* ! __CSADDR_DEFINED__ && \ */
51 /* ! __CSADDR_T_DEFINED */
52 /* --------------------------------- */
54 /* ------------------------------- */
55 #if !defined(IP_ADAPTER_DDNS_ENABLED)
56 /* ------------------------------- */
58 #define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x0001
59 #define IP_ADAPTER_ADDRESS_TRANSIENT 0x0002
61 #define IP_ADAPTER_DDNS_ENABLED 0x0001
62 #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x0002
63 #define IP_ADAPTER_DHCP_ENABLED 0x0004
64 #define IP_ADAPTER_RECEIVE_ONLY 0x0008
65 #define IP_ADAPTER_NO_MULTICAST 0x0010
66 #define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x0020
68 #define GAA_FLAG_SKIP_UNICAST 0x0001
69 #define GAA_FLAG_SKIP_ANYCAST 0x0002
70 #define GAA_FLAG_SKIP_MULTICAST 0x0004
71 #define GAA_FLAG_SKIP_DNS_SERVER 0x0008
72 #define GAA_FLAG_INCLUDE_PREFIX 0x0010
73 #define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
76 IpPrefixOriginOther = 0,
78 IpPrefixOriginWellKnown,
80 IpPrefixOriginRouterAdvertisement
84 IpSuffixOriginOther = 0,
86 IpSuffixOriginWellKnown,
88 IpSuffixOriginLinkLayerAddress,
93 IpDadStateInvalid = 0,
106 IfOperStatusNotPresent,
107 IfOperStatusLowerLayerDown
111 ScopeLevelInterface = 0x0001,
112 ScopeLevelLink = 0x0002,
113 ScopeLevelSubnet = 0x0003,
114 ScopeLevelAdmin = 0x0004,
115 ScopeLevelSite = 0x0005,
116 ScopeLevelOrganization = 0x0008,
117 ScopeLevelGlobal = 0x000E
120 typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
128 struct _IP_ADAPTER_UNICAST_ADDRESS *Next;
129 SOCKET_ADDRESS Address;
130 IP_PREFIX_ORIGIN PrefixOrigin;
131 IP_SUFFIX_ORIGIN SuffixOrigin;
132 IP_DAD_STATE DadState;
134 ULONG PreferredLifetime;
136 } IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS;
138 typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
146 struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
147 SOCKET_ADDRESS Address;
148 } IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
150 typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
158 struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
159 SOCKET_ADDRESS Address;
160 } IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
162 typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
170 struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
171 SOCKET_ADDRESS Address;
172 } IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
174 typedef struct _IP_ADAPTER_PREFIX {
182 struct _IP_ADAPTER_PREFIX *Next;
183 SOCKET_ADDRESS Address;
185 } IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX;
187 typedef struct _IP_ADAPTER_ADDRESSES {
195 struct _IP_ADAPTER_ADDRESSES *Next;
197 PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
198 PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
199 PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
200 PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
204 BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
205 DWORD PhysicalAddressLength;
209 IF_OPER_STATUS OperStatus;
211 DWORD ZoneIndices[16];
212 PIP_ADAPTER_PREFIX FirstPrefix;
213 } IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES;
215 /* -------------------------------- */
216 #endif /* ! IP_ADAPTER_DDNS_ENABLED */
217 /* -------------------------------- */
219 #endif /* USE_WINSOCK */
221 #endif /* HEADER_CARES_IPHLPAPI_H */