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(__CSADDR_DEFINED__) && !defined(__CSADDR_T_DEFINED)
32 /* ---------------------------------------------------------- */
34 typedef struct _SOCKET_ADDRESS {
35 LPSOCKADDR lpSockaddr;
37 } SOCKET_ADDRESS, *PSOCKET_ADDRESS;
39 typedef struct _CSADDR_INFO {
40 SOCKET_ADDRESS LocalAddr;
41 SOCKET_ADDRESS RemoteAddr;
44 } CSADDR_INFO, *PCSADDR_INFO;
46 /* --------------------------------------------------- */
47 #endif /* ! __CSADDR_DEFINED__ && ! __CSADDR_T_DEFINED */
48 /* --------------------------------------------------- */
50 /* ------------------------------- */
51 #if !defined(IP_ADAPTER_DDNS_ENABLED)
52 /* ------------------------------- */
54 #define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x0001
55 #define IP_ADAPTER_ADDRESS_TRANSIENT 0x0002
57 #define IP_ADAPTER_DDNS_ENABLED 0x0001
58 #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x0002
59 #define IP_ADAPTER_DHCP_ENABLED 0x0004
60 #define IP_ADAPTER_RECEIVE_ONLY 0x0008
61 #define IP_ADAPTER_NO_MULTICAST 0x0010
62 #define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x0020
64 #define GAA_FLAG_SKIP_UNICAST 0x0001
65 #define GAA_FLAG_SKIP_ANYCAST 0x0002
66 #define GAA_FLAG_SKIP_MULTICAST 0x0004
67 #define GAA_FLAG_SKIP_DNS_SERVER 0x0008
68 #define GAA_FLAG_INCLUDE_PREFIX 0x0010
69 #define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
72 IpPrefixOriginOther = 0,
74 IpPrefixOriginWellKnown,
76 IpPrefixOriginRouterAdvertisement
80 IpSuffixOriginOther = 0,
82 IpSuffixOriginWellKnown,
84 IpSuffixOriginLinkLayerAddress,
89 IpDadStateInvalid = 0,
102 IfOperStatusNotPresent,
103 IfOperStatusLowerLayerDown
107 ScopeLevelInterface = 0x0001,
108 ScopeLevelLink = 0x0002,
109 ScopeLevelSubnet = 0x0003,
110 ScopeLevelAdmin = 0x0004,
111 ScopeLevelSite = 0x0005,
112 ScopeLevelOrganization = 0x0008,
113 ScopeLevelGlobal = 0x000E
116 typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
124 struct _IP_ADAPTER_UNICAST_ADDRESS *Next;
125 SOCKET_ADDRESS Address;
126 IP_PREFIX_ORIGIN PrefixOrigin;
127 IP_SUFFIX_ORIGIN SuffixOrigin;
128 IP_DAD_STATE DadState;
130 ULONG PreferredLifetime;
132 } IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS;
134 typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
142 struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
143 SOCKET_ADDRESS Address;
144 } IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
146 typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
154 struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
155 SOCKET_ADDRESS Address;
156 } IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
158 typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
166 struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
167 SOCKET_ADDRESS Address;
168 } IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
170 typedef struct _IP_ADAPTER_PREFIX {
178 struct _IP_ADAPTER_PREFIX *Next;
179 SOCKET_ADDRESS Address;
181 } IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX;
183 typedef struct _IP_ADAPTER_ADDRESSES {
191 struct _IP_ADAPTER_ADDRESSES *Next;
193 PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
194 PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
195 PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
196 PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
200 BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
201 DWORD PhysicalAddressLength;
205 IF_OPER_STATUS OperStatus;
207 DWORD ZoneIndices[16];
208 PIP_ADAPTER_PREFIX FirstPrefix;
209 } IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES;
211 /* -------------------------------- */
212 #endif /* ! IP_ADAPTER_DDNS_ENABLED */
213 /* -------------------------------- */
215 #endif /* USE_WINSOCK */
217 #endif /* HEADER_CARES_IPHLPAPI_H */