3 * Copyright 2012, 2013 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
29 #include <sys/types.h>
34 #define DEFAULT_MINIMUM_ENTITIES 32
35 #define MAX_ADAPTER_ADDRESS_LENGTH 8
36 #define MAX_ADAPTER_DESCRIPTION_LENGTH 128
37 #define MAX_ADAPTER_NAME_LENGTH 256
38 #define MAX_DOMAIN_NAME_LEN 128
39 #define MAX_HOSTNAME_LEN 128
40 #define MAX_SCOPE_ID_LEN 256
41 #define BROADCAST_NODETYPE 1
42 #define PEER_TO_PEER_NODETYPE 2
43 #define MIXED_NODETYPE 4
44 #define HYBRID_NODETYPE 8
45 #define IF_OTHER_ADAPTERTYPE 0
46 #define IF_ETHERNET_ADAPTERTYPE 1
47 #define IF_TOKEN_RING_ADAPTERTYPE 2
48 #define IF_FDDI_ADAPTERTYPE 3
49 #define IF_PPP_ADAPTERTYPE 4
50 #define IF_LOOPBACK_ADAPTERTYPE 5
54 } IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
55 typedef struct _IP_ADDR_STRING {
56 struct _IP_ADDR_STRING* Next;
57 IP_ADDRESS_STRING IpAddress;
58 IP_MASK_STRING IpMask;
60 } IP_ADDR_STRING, *PIP_ADDR_STRING;
61 typedef struct _IP_ADAPTER_INFO {
62 struct _IP_ADAPTER_INFO* Next;
64 char AdapterName[MAX_ADAPTER_NAME_LENGTH+4];
65 char Description[MAX_ADAPTER_DESCRIPTION_LENGTH+4];
67 BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
71 PIP_ADDR_STRING CurrentIpAddress;
72 IP_ADDR_STRING IpAddressList;
73 IP_ADDR_STRING GatewayList;
74 IP_ADDR_STRING DhcpServer;
76 IP_ADDR_STRING PrimaryWinsServer;
77 IP_ADDR_STRING SecondaryWinsServer;
80 } IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
81 typedef struct _IP_PER_ADAPTER_INFO {
82 UINT AutoconfigEnabled;
83 UINT AutoconfigActive;
84 PIP_ADDR_STRING CurrentDnsServer;
85 IP_ADDR_STRING DnsServerList;
86 } IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
87 typedef struct _FIXED_INFO {
88 char HostName[MAX_HOSTNAME_LEN+4] ;
89 char DomainName[MAX_DOMAIN_NAME_LEN+4];
90 PIP_ADDR_STRING CurrentDnsServer;
91 IP_ADDR_STRING DnsServerList;
93 char ScopeId[MAX_SCOPE_ID_LEN+4];
97 } FIXED_INFO, *PFIXED_INFO;
99 #if (_WIN32_WINNT >= _WIN32_WINNT_WINXP)
100 #define IP_ADAPTER_DDNS_ENABLED 0x00000001
101 #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x00000002
102 #define IP_ADAPTER_DHCP_ENABLED 0x00000004
103 #define IP_ADAPTER_RECEIVE_ONLY 0x00000008
104 #define IP_ADAPTER_NO_MULTICAST 0x00000010
105 #define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x00000020
106 #define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x00000001
107 #define IP_ADAPTER_ADDRESS_TRANSIENT 0x00000002
109 #if defined(_WINSOCK2_H)
116 IfOperStatusNotPresent,
117 IfOperStatusLowerLayerDown
120 IpDadStateInvalid = 0,
123 IpDadStateDeprecated,
127 IpPrefixOriginOther = 0,
128 IpPrefixOriginManual,
129 IpPrefixOriginWellKnown,
131 IpPrefixOriginRouterAdvertisement
134 IpSuffixOriginOther = 0,
135 IpSuffixOriginManual,
136 IpSuffixOriginWellKnown,
138 IpSuffixOriginLinkLayerAddress,
142 ScopeLevelInterface = 1,
144 ScopeLevelSubnet = 3,
147 ScopeLevelOrganization = 8,
148 ScopeLevelGlobal = 14
153 UCHAR ConnectionType;
157 } IP_INTERFACE_NAME_INFO,*PIP_INTERFACE_NAME_INFO;
158 typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
159 _ANONYMOUS_UNION union {
161 _ANONYMOUS_STRUCT struct {
166 struct _IP_ADAPTER_ANYCAST_ADDRESS* Next;
167 SOCKET_ADDRESS Address;
168 } IP_ADAPTER_ANYCAST_ADDRESS,*PIP_ADAPTER_ANYCAST_ADDRESS;
169 typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
170 _ANONYMOUS_UNION union {
172 _ANONYMOUS_STRUCT struct {
177 struct _IP_ADAPTER_MULTICAST_ADDRESS* Next;
178 SOCKET_ADDRESS Address;
179 } IP_ADAPTER_MULTICAST_ADDRESS,*PIP_ADAPTER_MULTICAST_ADDRESS;
180 typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
181 _ANONYMOUS_UNION union {
183 _ANONYMOUS_STRUCT struct {
188 struct _IP_ADAPTER_UNICAST_ADDRESS* Next;
189 SOCKET_ADDRESS Address;
190 IP_PREFIX_ORIGIN PrefixOrigin;
191 IP_SUFFIX_ORIGIN SuffixOrigin;
192 IP_DAD_STATE DadState;
194 ULONG PreferredLifetime;
196 } IP_ADAPTER_UNICAST_ADDRESS,*PIP_ADAPTER_UNICAST_ADDRESS;
197 typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
198 _ANONYMOUS_UNION union {
200 _ANONYMOUS_STRUCT struct {
205 struct _IP_ADAPTER_DNS_SERVER_ADDRESS* Next;
206 SOCKET_ADDRESS Address;
207 } IP_ADAPTER_DNS_SERVER_ADDRESS,*PIP_ADAPTER_DNS_SERVER_ADDRESS;
208 typedef struct _IP_ADAPTER_PREFIX {
209 _ANONYMOUS_UNION union {
211 _ANONYMOUS_STRUCT struct {
216 struct _IP_ADAPTER_PREFIX* Next;
217 SOCKET_ADDRESS Address;
219 } IP_ADAPTER_PREFIX,*PIP_ADAPTER_PREFIX;
220 typedef struct _IP_ADAPTER_ADDRESSES {
221 _ANONYMOUS_UNION union {
223 _ANONYMOUS_STRUCT struct {
228 struct _IP_ADAPTER_ADDRESSES* Next;
230 PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
231 PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
232 PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
233 PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
237 BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
238 DWORD PhysicalAddressLength;
242 IF_OPER_STATUS OperStatus;
244 DWORD ZoneIndices[16];
245 PIP_ADAPTER_PREFIX FirstPrefix;
246 } IP_ADAPTER_ADDRESSES,*PIP_ADAPTER_ADDRESSES;
247 #endif /* _WINSOCK2_H */
248 #endif /* _WIN32_WINNT >= _WIN32_WINNT_WINXP */
253 #endif /* _IPTYPES_H */