1 #ifndef HEADER_CARES_IPHLPAPI_H
2 #define HEADER_CARES_IPHLPAPI_H
20 #if defined(USE_WINSOCK)
22 #ifndef INET_ADDRSTRLEN
23 #define INET_ADDRSTRLEN 22
26 #ifndef INET6_ADDRSTRLEN
27 #define INET6_ADDRSTRLEN 65
31 #if !defined(_WS2DEF_) && \
32 !defined(__CSADDR_DEFINED__) && \
33 !defined(__CSADDR_T_DEFINED)
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;
55 #if !defined(IP_ADAPTER_DDNS_ENABLED)
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;
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;
148 } IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
150 typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
158 struct _IP_ADAPTER_MULTICAST_ADDRESS *
Next;
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;
172 } IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
174 typedef struct _IP_ADAPTER_PREFIX {
182 struct _IP_ADAPTER_PREFIX *
Next;
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;