source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/iptypes.h

Last change on this file was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 11.4 KB
Line 
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef IP_TYPES_INCLUDED
7#define IP_TYPES_INCLUDED
8
9#include <winapifamily.h>
10#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 0x0A00
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16#include <time.h>
17#include <ifdef.h>
18#include <nldef.h>
19
20#define MAX_ADAPTER_DESCRIPTION_LENGTH 128
21#define MAX_ADAPTER_NAME_LENGTH 256
22#define MAX_ADAPTER_ADDRESS_LENGTH 8
23#define DEFAULT_MINIMUM_ENTITIES 32
24#define MAX_HOSTNAME_LEN 128
25#define MAX_DOMAIN_NAME_LEN 128
26#define MAX_SCOPE_ID_LEN 256
27#define MAX_DHCPV6_DUID_LENGTH 130
28#define MAX_DNS_SUFFIX_STRING_LENGTH 256
29
30#define BROADCAST_NODETYPE 1
31#define PEER_TO_PEER_NODETYPE 2
32#define MIXED_NODETYPE 4
33#define HYBRID_NODETYPE 8
34
35 typedef struct {
36 char String[4*4];
37 } IP_ADDRESS_STRING,*PIP_ADDRESS_STRING,IP_MASK_STRING,*PIP_MASK_STRING;
38
39 typedef struct _IP_ADDR_STRING {
40 struct _IP_ADDR_STRING *Next;
41 IP_ADDRESS_STRING IpAddress;
42 IP_MASK_STRING IpMask;
43 DWORD Context;
44 } IP_ADDR_STRING,*PIP_ADDR_STRING;
45
46 typedef struct _IP_ADAPTER_INFO {
47 struct _IP_ADAPTER_INFO *Next;
48 DWORD ComboIndex;
49 char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
50 char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
51 UINT AddressLength;
52 BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
53 DWORD Index;
54 UINT Type;
55 UINT DhcpEnabled;
56 PIP_ADDR_STRING CurrentIpAddress;
57 IP_ADDR_STRING IpAddressList;
58 IP_ADDR_STRING GatewayList;
59 IP_ADDR_STRING DhcpServer;
60 WINBOOL HaveWins;
61 IP_ADDR_STRING PrimaryWinsServer;
62 IP_ADDR_STRING SecondaryWinsServer;
63 time_t LeaseObtained;
64 time_t LeaseExpires;
65 } IP_ADAPTER_INFO,*PIP_ADAPTER_INFO;
66
67#ifdef _WINSOCK2API_
68
69 typedef NL_PREFIX_ORIGIN IP_PREFIX_ORIGIN;
70 typedef NL_SUFFIX_ORIGIN IP_SUFFIX_ORIGIN;
71 typedef NL_DAD_STATE IP_DAD_STATE;
72
73 typedef struct _IP_ADAPTER_UNICAST_ADDRESS_XP {
74 __C89_NAMELESS union {
75 ULONGLONG Alignment;
76 __C89_NAMELESS struct {
77 ULONG Length;
78 DWORD Flags;
79 };
80 };
81 struct _IP_ADAPTER_UNICAST_ADDRESS_XP *Next;
82 SOCKET_ADDRESS Address;
83 IP_PREFIX_ORIGIN PrefixOrigin;
84 IP_SUFFIX_ORIGIN SuffixOrigin;
85 IP_DAD_STATE DadState;
86 ULONG ValidLifetime;
87 ULONG PreferredLifetime;
88 ULONG LeaseLifetime;
89 } IP_ADAPTER_UNICAST_ADDRESS_XP,*PIP_ADAPTER_UNICAST_ADDRESS_XP;
90
91 typedef struct _IP_ADAPTER_UNICAST_ADDRESS_LH {
92 __C89_NAMELESS union {
93 ULONGLONG Alignment;
94 __C89_NAMELESS struct {
95 ULONG Length;
96 DWORD Flags;
97 };
98 };
99 struct _IP_ADAPTER_UNICAST_ADDRESS_LH *Next;
100 SOCKET_ADDRESS Address;
101 IP_PREFIX_ORIGIN PrefixOrigin;
102 IP_SUFFIX_ORIGIN SuffixOrigin;
103 IP_DAD_STATE DadState;
104 ULONG ValidLifetime;
105 ULONG PreferredLifetime;
106 ULONG LeaseLifetime;
107 UINT8 OnLinkPrefixLength;
108 } IP_ADAPTER_UNICAST_ADDRESS_LH,*PIP_ADAPTER_UNICAST_ADDRESS_LH;
109
110#if (_WIN32_WINNT >= 0x0600)
111 typedef IP_ADAPTER_UNICAST_ADDRESS_LH IP_ADAPTER_UNICAST_ADDRESS;
112 typedef IP_ADAPTER_UNICAST_ADDRESS_LH *PIP_ADAPTER_UNICAST_ADDRESS;
113#else /* _WIN32_WINNT >= 0x0501 */
114 typedef IP_ADAPTER_UNICAST_ADDRESS_XP IP_ADAPTER_UNICAST_ADDRESS;
115 typedef IP_ADAPTER_UNICAST_ADDRESS_XP *PIP_ADAPTER_UNICAST_ADDRESS;
116#endif
117
118 typedef struct _IP_ADAPTER_ANYCAST_ADDRESS_XP {
119 __C89_NAMELESS union {
120 ULONGLONG Alignment;
121 __C89_NAMELESS struct {
122 ULONG Length;
123 DWORD Flags;
124 };
125 };
126 struct _IP_ADAPTER_ANYCAST_ADDRESS_XP *Next;
127 SOCKET_ADDRESS Address;
128 } IP_ADAPTER_ANYCAST_ADDRESS_XP,*PIP_ADAPTER_ANYCAST_ADDRESS_XP;
129 typedef IP_ADAPTER_ANYCAST_ADDRESS_XP IP_ADAPTER_ANYCAST_ADDRESS;
130 typedef IP_ADAPTER_ANYCAST_ADDRESS_XP *PIP_ADAPTER_ANYCAST_ADDRESS;
131
132 typedef struct _IP_ADAPTER_MULTICAST_ADDRESS_XP {
133 __C89_NAMELESS union {
134 ULONGLONG Alignment;
135 __C89_NAMELESS struct {
136 ULONG Length;
137 DWORD Flags;
138 };
139 };
140 struct _IP_ADAPTER_MULTICAST_ADDRESS_XP *Next;
141 SOCKET_ADDRESS Address;
142 } IP_ADAPTER_MULTICAST_ADDRESS_XP,*PIP_ADAPTER_MULTICAST_ADDRESS_XP;
143 typedef IP_ADAPTER_MULTICAST_ADDRESS_XP IP_ADAPTER_MULTICAST_ADDRESS;
144 typedef IP_ADAPTER_MULTICAST_ADDRESS_XP *PIP_ADAPTER_MULTICAST_ADDRESS;
145
146#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x01
147#define IP_ADAPTER_ADDRESS_TRANSIENT 0x02
148#define IP_ADAPTER_ADDRESS_PRIMARY 0x04
149
150 typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS_XP {
151 __C89_NAMELESS union {
152 ULONGLONG Alignment;
153 __C89_NAMELESS struct {
154 ULONG Length;
155 DWORD Reserved;
156 };
157 };
158 struct _IP_ADAPTER_DNS_SERVER_ADDRESS_XP *Next;
159 SOCKET_ADDRESS Address;
160 } IP_ADAPTER_DNS_SERVER_ADDRESS_XP,*PIP_ADAPTER_DNS_SERVER_ADDRESS_XP;
161 typedef IP_ADAPTER_DNS_SERVER_ADDRESS_XP IP_ADAPTER_DNS_SERVER_ADDRESS;
162 typedef IP_ADAPTER_DNS_SERVER_ADDRESS_XP *PIP_ADAPTER_DNS_SERVER_ADDRESS;
163
164 typedef struct _IP_ADAPTER_PREFIX_XP {
165 __C89_NAMELESS union {
166 ULONGLONG Alignment;
167 __C89_NAMELESS struct {
168 ULONG Length;
169 DWORD Flags;
170 };
171 };
172 struct _IP_ADAPTER_PREFIX_XP *Next;
173 SOCKET_ADDRESS Address;
174 ULONG PrefixLength;
175 } IP_ADAPTER_PREFIX_XP,*PIP_ADAPTER_PREFIX_XP;
176 typedef IP_ADAPTER_PREFIX_XP IP_ADAPTER_PREFIX;
177 typedef IP_ADAPTER_PREFIX_XP *PIP_ADAPTER_PREFIX;
178
179 typedef struct _IP_ADAPTER_WINS_SERVER_ADDRESS_LH {
180 __C89_NAMELESS union {
181 ULONGLONG Alignment;
182 __C89_NAMELESS struct {
183 ULONG Length;
184 DWORD Reserved;
185 };
186 };
187 struct _IP_ADAPTER_WINS_SERVER_ADDRESS_LH *Next;
188 SOCKET_ADDRESS Address;
189 } IP_ADAPTER_WINS_SERVER_ADDRESS_LH,*PIP_ADAPTER_WINS_SERVER_ADDRESS_LH;
190#if (_WIN32_WINNT >= 0x0600)
191 typedef IP_ADAPTER_WINS_SERVER_ADDRESS_LH IP_ADAPTER_WINS_SERVER_ADDRESS;
192 typedef IP_ADAPTER_WINS_SERVER_ADDRESS_LH *PIP_ADAPTER_WINS_SERVER_ADDRESS;
193#endif
194
195 typedef struct _IP_ADAPTER_GATEWAY_ADDRESS_LH {
196 __C89_NAMELESS union {
197 ULONGLONG Alignment;
198 __C89_NAMELESS struct {
199 ULONG Length;
200 DWORD Reserved;
201 };
202 };
203 struct _IP_ADAPTER_GATEWAY_ADDRESS_LH *Next;
204 SOCKET_ADDRESS Address;
205 } IP_ADAPTER_GATEWAY_ADDRESS_LH,*PIP_ADAPTER_GATEWAY_ADDRESS_LH;
206#if (_WIN32_WINNT >= 0x0600)
207 typedef IP_ADAPTER_GATEWAY_ADDRESS_LH IP_ADAPTER_GATEWAY_ADDRESS;
208 typedef IP_ADAPTER_GATEWAY_ADDRESS_LH *PIP_ADAPTER_GATEWAY_ADDRESS;
209#endif
210
211 typedef struct _IP_ADAPTER_DNS_SUFFIX {
212 struct _IP_ADAPTER_DNS_SUFFIX *Next;
213 WCHAR String[MAX_DNS_SUFFIX_STRING_LENGTH];
214 } IP_ADAPTER_DNS_SUFFIX, *PIP_ADAPTER_DNS_SUFFIX;
215
216#define IP_ADAPTER_DDNS_ENABLED 0x01
217#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x02
218#define IP_ADAPTER_DHCP_ENABLED 0x04
219#define IP_ADAPTER_RECEIVE_ONLY 0x08
220#define IP_ADAPTER_NO_MULTICAST 0x10
221#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x20
222#define IP_ADAPTER_NETBIOS_OVER_TCPIP_ENABLED 0x40
223#define IP_ADAPTER_IPV4_ENABLED 0x80
224#define IP_ADAPTER_IPV6_ENABLED 0x100
225#define IP_ADAPTER_IPV6_MANAGE_ADDRESS_CONFIG 0x200
226
227 typedef struct _IP_ADAPTER_ADDRESSES_LH {
228 __C89_NAMELESS union {
229 ULONGLONG Alignment;
230 __C89_NAMELESS struct {
231 ULONG Length;
232 IF_INDEX IfIndex;
233 };
234 };
235 struct _IP_ADAPTER_ADDRESSES_LH *Next;
236 PCHAR AdapterName;
237 PIP_ADAPTER_UNICAST_ADDRESS_LH FirstUnicastAddress;
238 PIP_ADAPTER_ANYCAST_ADDRESS_XP FirstAnycastAddress;
239 PIP_ADAPTER_MULTICAST_ADDRESS_XP FirstMulticastAddress;
240 PIP_ADAPTER_DNS_SERVER_ADDRESS_XP FirstDnsServerAddress;
241 PWCHAR DnsSuffix;
242 PWCHAR Description;
243 PWCHAR FriendlyName;
244 BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
245 ULONG PhysicalAddressLength;
246 __C89_NAMELESS union {
247 ULONG Flags;
248 __C89_NAMELESS struct {
249 ULONG DdnsEnabled : 1;
250 ULONG RegisterAdapterSuffix : 1;
251 ULONG Dhcpv4Enabled : 1;
252 ULONG ReceiveOnly : 1;
253 ULONG NoMulticast : 1;
254 ULONG Ipv6OtherStatefulConfig : 1;
255 ULONG NetbiosOverTcpipEnabled : 1;
256 ULONG Ipv4Enabled : 1;
257 ULONG Ipv6Enabled : 1;
258 ULONG Ipv6ManagedAddressConfigurationSupported : 1;
259 };
260 };
261 ULONG Mtu;
262 IFTYPE IfType;
263 IF_OPER_STATUS OperStatus;
264 IF_INDEX Ipv6IfIndex;
265 ULONG ZoneIndices[16];
266 PIP_ADAPTER_PREFIX_XP FirstPrefix;
267
268 ULONG64 TransmitLinkSpeed;
269 ULONG64 ReceiveLinkSpeed;
270 PIP_ADAPTER_WINS_SERVER_ADDRESS_LH FirstWinsServerAddress;
271 PIP_ADAPTER_GATEWAY_ADDRESS_LH FirstGatewayAddress;
272 ULONG Ipv4Metric;
273 ULONG Ipv6Metric;
274 IF_LUID Luid;
275 SOCKET_ADDRESS Dhcpv4Server;
276 NET_IF_COMPARTMENT_ID CompartmentId;
277 NET_IF_NETWORK_GUID NetworkGuid;
278 NET_IF_CONNECTION_TYPE ConnectionType;
279 TUNNEL_TYPE TunnelType;
280
281 SOCKET_ADDRESS Dhcpv6Server;
282 BYTE Dhcpv6ClientDuid[MAX_DHCPV6_DUID_LENGTH];
283 ULONG Dhcpv6ClientDuidLength;
284 ULONG Dhcpv6Iaid;
285#if (NTDDI_VERSION >= 0x06000100) /* NTDDI_VISTASP1 */
286 PIP_ADAPTER_DNS_SUFFIX FirstDnsSuffix;
287#endif
288 } IP_ADAPTER_ADDRESSES_LH, *PIP_ADAPTER_ADDRESSES_LH;
289
290 typedef struct _IP_ADAPTER_ADDRESSES_XP {
291 __C89_NAMELESS union {
292 ULONGLONG Alignment;
293 __C89_NAMELESS struct {
294 ULONG Length;
295 DWORD IfIndex;
296 };
297 };
298 struct _IP_ADAPTER_ADDRESSES_XP *Next;
299 PCHAR AdapterName;
300 PIP_ADAPTER_UNICAST_ADDRESS_XP FirstUnicastAddress;
301 PIP_ADAPTER_ANYCAST_ADDRESS_XP FirstAnycastAddress;
302 PIP_ADAPTER_MULTICAST_ADDRESS_XP FirstMulticastAddress;
303 PIP_ADAPTER_DNS_SERVER_ADDRESS_XP FirstDnsServerAddress;
304 PWCHAR DnsSuffix;
305 PWCHAR Description;
306 PWCHAR FriendlyName;
307 BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
308 DWORD PhysicalAddressLength;
309 DWORD Flags;
310 DWORD Mtu;
311 DWORD IfType;
312 IF_OPER_STATUS OperStatus;
313 DWORD Ipv6IfIndex;
314 DWORD ZoneIndices[16];
315 PIP_ADAPTER_PREFIX_XP FirstPrefix;
316 } IP_ADAPTER_ADDRESSES_XP,*PIP_ADAPTER_ADDRESSES_XP;
317
318#if (_WIN32_WINNT >= 0x0600)
319 typedef IP_ADAPTER_ADDRESSES_LH IP_ADAPTER_ADDRESSES;
320 typedef IP_ADAPTER_ADDRESSES_LH *PIP_ADAPTER_ADDRESSES;
321#else /* _WIN32_WINNT >= 0x0501 */
322 typedef IP_ADAPTER_ADDRESSES_XP IP_ADAPTER_ADDRESSES;
323 typedef IP_ADAPTER_ADDRESSES_XP *PIP_ADAPTER_ADDRESSES;
324#endif
325
326#define GAA_FLAG_SKIP_UNICAST 0x0001
327#define GAA_FLAG_SKIP_ANYCAST 0x0002
328#define GAA_FLAG_SKIP_MULTICAST 0x0004
329#define GAA_FLAG_SKIP_DNS_SERVER 0x0008
330#define GAA_FLAG_INCLUDE_PREFIX 0x0010
331#define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
332#define GAA_FLAG_INCLUDE_WINS_INFO 0x0040
333#define GAA_FLAG_INCLUDE_GATEWAYS 0x0080
334#define GAA_FLAG_INCLUDE_ALL_INTERFACES 0x0100
335#define GAA_FLAG_INCLUDE_ALL_COMPARTMENTS 0x0200
336#define GAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER 0x0400
337#endif /* _WINSOCK2API_ */
338
339 typedef struct _IP_PER_ADAPTER_INFO {
340 UINT AutoconfigEnabled;
341 UINT AutoconfigActive;
342 PIP_ADDR_STRING CurrentDnsServer;
343 IP_ADDR_STRING DnsServerList;
344 } IP_PER_ADAPTER_INFO,*PIP_PER_ADAPTER_INFO;
345
346 typedef struct {
347 char HostName[MAX_HOSTNAME_LEN + 4];
348 char DomainName[MAX_DOMAIN_NAME_LEN + 4];
349 PIP_ADDR_STRING CurrentDnsServer;
350 IP_ADDR_STRING DnsServerList;
351 UINT NodeType;
352 char ScopeId[MAX_SCOPE_ID_LEN + 4];
353 UINT EnableRouting;
354 UINT EnableProxy;
355 UINT EnableDns;
356 } FIXED_INFO,*PFIXED_INFO;
357
358#ifndef IP_INTERFACE_NAME_INFO_DEFINED
359#define IP_INTERFACE_NAME_INFO_DEFINED
360
361 typedef struct ip_interface_name_info {
362 ULONG Index;
363 ULONG MediaType;
364 UCHAR ConnectionType;
365 UCHAR AccessType;
366 GUID DeviceGuid;
367 GUID InterfaceGuid;
368 } IP_INTERFACE_NAME_INFO,*PIP_INTERFACE_NAME_INFO;
369#endif
370
371#ifdef __cplusplus
372}
373#endif
374
375#endif /* #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 0x0A00 */
376
377#endif /* IP_TYPES_INCLUDED */
378
Note: See TracBrowser for help on using the repository browser.