dinput: Avoid deadlock when CS are acquired in different order.
[wine.git] / include / iptypes.h
blobc1a253d7b41188a41ba74931f93071dc5c28e0a3
1 /* WINE iptypes.h
2 * Copyright (C) 2003 Juan Lang
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef WINE_IPTYPES_H_
20 #define WINE_IPTYPES_H_
22 #include <time.h>
23 #include <ifdef.h>
24 #include <nldef.h>
26 #define MAX_ADAPTER_DESCRIPTION_LENGTH 128
27 #define MAX_ADAPTER_NAME_LENGTH 256
28 #define MAX_ADAPTER_ADDRESS_LENGTH 8
29 #define MAX_HOSTNAME_LEN 128
30 #define MAX_DOMAIN_NAME_LEN 128
31 #define MAX_SCOPE_ID_LEN 256
32 #define MAX_DHCPV6_DUID_LENGTH 130
33 #define MAX_DNS_SUFFIX_STRING_LENGTH 256
35 #define BROADCAST_NODETYPE 1
36 #define PEER_TO_PEER_NODETYPE 2
37 #define MIXED_NODETYPE 4
38 #define HYBRID_NODETYPE 8
40 typedef struct {
41 char String[4 * 4];
42 } IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
44 typedef struct _IP_ADDR_STRING {
45 struct _IP_ADDR_STRING* Next;
46 IP_ADDRESS_STRING IpAddress;
47 IP_MASK_STRING IpMask;
48 DWORD Context;
49 } IP_ADDR_STRING, *PIP_ADDR_STRING;
51 typedef struct _IP_ADAPTER_INFO {
52 struct _IP_ADAPTER_INFO* Next;
53 DWORD ComboIndex;
54 char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
55 char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
56 UINT AddressLength;
57 BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
58 DWORD Index;
59 UINT Type;
60 UINT DhcpEnabled;
61 PIP_ADDR_STRING CurrentIpAddress;
62 IP_ADDR_STRING IpAddressList;
63 IP_ADDR_STRING GatewayList;
64 IP_ADDR_STRING DhcpServer;
65 BOOL HaveWins;
66 IP_ADDR_STRING PrimaryWinsServer;
67 IP_ADDR_STRING SecondaryWinsServer;
68 time_t LeaseObtained;
69 time_t LeaseExpires;
70 } IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
72 typedef struct _IP_PER_ADAPTER_INFO {
73 UINT AutoconfigEnabled;
74 UINT AutoconfigActive;
75 PIP_ADDR_STRING CurrentDnsServer;
76 IP_ADDR_STRING DnsServerList;
77 } IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
79 typedef struct {
80 char HostName[MAX_HOSTNAME_LEN + 4] ;
81 char DomainName[MAX_DOMAIN_NAME_LEN + 4];
82 PIP_ADDR_STRING CurrentDnsServer;
83 IP_ADDR_STRING DnsServerList;
84 UINT NodeType;
85 char ScopeId[MAX_SCOPE_ID_LEN + 4];
86 UINT EnableRouting;
87 UINT EnableProxy;
88 UINT EnableDns;
89 } FIXED_INFO, *PFIXED_INFO;
91 typedef NL_PREFIX_ORIGIN IP_PREFIX_ORIGIN;
92 typedef NL_SUFFIX_ORIGIN IP_SUFFIX_ORIGIN;
93 typedef NL_DAD_STATE IP_DAD_STATE;
95 #ifdef _WINSOCK2API_
97 typedef struct _IP_ADAPTER_UNICAST_ADDRESS_LH {
98 union {
99 struct {
100 ULONG Length;
101 DWORD Flags;
102 } DUMMYSTRUCTNAME;
103 } DUMMYUNIONNAME;
104 struct _IP_ADAPTER_UNICAST_ADDRESS_LH *Next;
105 SOCKET_ADDRESS Address;
106 IP_PREFIX_ORIGIN PrefixOrigin;
107 IP_SUFFIX_ORIGIN SuffixOrigin;
108 IP_DAD_STATE DadState;
109 ULONG ValidLifetime;
110 ULONG PreferredLifetime;
111 ULONG LeaseLifetime;
112 UINT8 OnLinkPrefixLength;
113 } IP_ADAPTER_UNICAST_ADDRESS_LH, *PIP_ADAPTER_UNICAST_ADDRESS_LH;
115 typedef struct _IP_ADAPTER_UNICAST_ADDRESS_XP {
116 union {
117 struct {
118 ULONG Length;
119 DWORD Flags;
120 } DUMMYSTRUCTNAME;
121 } DUMMYUNIONNAME;
122 struct _IP_ADAPTER_UNICAST_ADDRESS_XP *Next;
123 SOCKET_ADDRESS Address;
124 IP_PREFIX_ORIGIN PrefixOrigin;
125 IP_SUFFIX_ORIGIN SuffixOrigin;
126 IP_DAD_STATE DadState;
127 ULONG ValidLifetime;
128 ULONG PreferredLifetime;
129 ULONG LeaseLifetime;
130 } IP_ADAPTER_UNICAST_ADDRESS_XP, *PIP_ADAPTER_UNICAST_ADDRESS_XP;
132 typedef IP_ADAPTER_UNICAST_ADDRESS_LH IP_ADAPTER_UNICAST_ADDRESS;
133 typedef IP_ADAPTER_UNICAST_ADDRESS_LH *PIP_ADAPTER_UNICAST_ADDRESS;
135 typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
136 union {
137 ULONGLONG Alignment;
138 struct {
139 ULONG Length;
140 DWORD Flags;
141 } DUMMYSTRUCTNAME;
142 } DUMMYUNIONNAME;
143 struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
144 SOCKET_ADDRESS Address;
145 } IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
147 typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
148 union {
149 ULONGLONG Alignment;
150 struct {
151 ULONG Length;
152 DWORD Flags;
153 } DUMMYSTRUCTNAME;
154 } DUMMYUNIONNAME;
155 struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
156 SOCKET_ADDRESS Address;
157 } IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
159 typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
160 union {
161 ULONGLONG Alignment;
162 struct {
163 ULONG Length;
164 DWORD Reserved;
165 } DUMMYSTRUCTNAME;
166 } DUMMYUNIONNAME;
167 struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
168 SOCKET_ADDRESS Address;
169 } IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
171 typedef struct _IP_ADAPTER_PREFIX {
172 union {
173 ULONGLONG Alignment;
174 struct {
175 ULONG Length;
176 DWORD Flags;
177 } DUMMYSTRUCTNAME;
178 } DUMMYUNIONNAME;
179 struct _IP_ADAPTER_PREFIX *Next;
180 SOCKET_ADDRESS Address;
181 ULONG PrefixLength;
182 } IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX;
184 typedef struct _IP_ADAPTER_WINS_SERVER_ADDRESS_LH {
185 union {
186 ULONGLONG Alignment;
187 struct {
188 ULONG Length;
189 DWORD Reserved;
190 } DUMMYSTRUCTNAME;
191 } DUMMYUNIONNAME;
192 struct _IP_ADAPTER_WINS_SERVER_ADDRESS_LH *Next;
193 SOCKET_ADDRESS Address;
194 } IP_ADAPTER_WINS_SERVER_ADDRESS_LH, *PIP_ADAPTER_WINS_SERVER_ADDRESS_LH;
195 typedef IP_ADAPTER_WINS_SERVER_ADDRESS_LH IP_ADAPTER_WINS_SERVER_ADDRESS;
196 typedef IP_ADAPTER_WINS_SERVER_ADDRESS_LH *PIP_ADAPTER_WINS_SERVER_ADDRESS;
198 typedef struct _IP_ADAPTER_GATEWAY_ADDRESS_LH {
199 union {
200 ULONGLONG Alignment;
201 struct {
202 ULONG Length;
203 DWORD Reserved;
204 } DUMMYSTRUCTNAME;
205 } DUMMYUNIONNAME;
206 struct _IP_ADAPTER_GATEWAY_ADDRESS_LH *Next;
207 SOCKET_ADDRESS Address;
208 } IP_ADAPTER_GATEWAY_ADDRESS_LH, *PIP_ADAPTER_GATEWAY_ADDRESS_LH;
209 typedef IP_ADAPTER_GATEWAY_ADDRESS_LH IP_ADAPTER_GATEWAY_ADDRESS;
210 typedef IP_ADAPTER_GATEWAY_ADDRESS_LH *PIP_ADAPTER_GATEWAY_ADDRESS;
212 typedef struct _IP_ADAPTER_DNS_SUFFIX {
213 struct _IP_ADAPTER_DNS_SUFFIX *Next;
214 WCHAR String[MAX_DNS_SUFFIX_STRING_LENGTH];
215 } IP_ADAPTER_DNS_SUFFIX, *PIP_ADAPTER_DNS_SUFFIX;
217 #define IP_ADAPTER_DDNS_ENABLED 0x1
218 #define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x2
219 #define IP_ADAPTER_DHCP_ENABLED 0x4
220 #define IP_ADAPTER_RECEIVE_ONLY 0x8
221 #define IP_ADAPTER_NO_MULTICAST 0x10
222 #define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x20
223 #define IP_ADAPTER_NETBIOS_OVER_TCPIP_ENABLED 0x40
224 #define IP_ADAPTER_IPV4_ENABLED 0x80
225 #define IP_ADAPTER_IPV6_ENABLED 0x100
226 #define IP_ADAPTER_IPV6_MANAGE_ADDRESS_CONFIG 0x200
228 typedef struct _IP_ADAPTER_ADDRESSES_LH {
229 union {
230 ULONGLONG Alignment;
231 struct {
232 ULONG Length;
233 DWORD IfIndex;
234 } DUMMYSTRUCTNAME;
235 } DUMMYUNIONNAME;
236 struct _IP_ADAPTER_ADDRESSES_LH *Next;
237 PCHAR AdapterName;
238 PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
239 PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
240 PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
241 PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
242 PWCHAR DnsSuffix;
243 PWCHAR Description;
244 PWCHAR FriendlyName;
245 BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
246 DWORD PhysicalAddressLength;
247 union {
248 DWORD Flags;
249 struct {
250 DWORD DdnsEnabled : 1;
251 DWORD RegisterAdapterSuffix : 1;
252 DWORD Dhcpv4Enabled : 1;
253 DWORD ReceiveOnly : 1;
254 DWORD NoMulticast : 1;
255 DWORD Ipv6OtherStatefulConfig : 1;
256 DWORD NetbiosOverTcpipEnabled : 1;
257 DWORD Ipv4Enabled : 1;
258 DWORD Ipv6Enabled : 1;
259 DWORD Ipv6ManagedAddressConfigurationSupported : 1;
260 } DUMMYSTRUCTNAME1;
261 } DUMMYUNIONNAME1;
262 DWORD Mtu;
263 DWORD IfType;
264 IF_OPER_STATUS OperStatus;
265 DWORD Ipv6IfIndex;
266 DWORD ZoneIndices[16];
267 PIP_ADAPTER_PREFIX FirstPrefix;
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 SOCKET_ADDRESS Dhcpv6Server;
281 BYTE Dhcpv6ClientDuid[MAX_DHCPV6_DUID_LENGTH];
282 ULONG Dhcpv6ClientDuidLength;
283 ULONG Dhcpv6Iaid;
284 PIP_ADAPTER_DNS_SUFFIX FirstDnsSuffix;
285 } IP_ADAPTER_ADDRESSES_LH, *PIP_ADAPTER_ADDRESSES_LH;
287 typedef struct _IP_ADAPTER_ADDRESSES_XP {
288 union {
289 ULONGLONG Alignment;
290 struct {
291 ULONG Length;
292 DWORD IfIndex;
293 } DUMMYSTRUCTNAME;
294 } DUMMYUNIONNAME;
295 struct _IP_ADAPTER_ADDRESSES_XP *Next;
296 PCHAR AdapterName;
297 PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
298 PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
299 PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
300 PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
301 PWCHAR DnsSuffix;
302 PWCHAR Description;
303 PWCHAR FriendlyName;
304 BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
305 DWORD PhysicalAddressLength;
306 DWORD Flags;
307 DWORD Mtu;
308 DWORD IfType;
309 IF_OPER_STATUS OperStatus;
310 DWORD Ipv6IfIndex;
311 DWORD ZoneIndices[16];
312 PIP_ADAPTER_PREFIX FirstPrefix;
313 } IP_ADAPTER_ADDRESSES_XP, *PIP_ADAPTER_ADDRESSES_XP;
315 typedef IP_ADAPTER_ADDRESSES_LH IP_ADAPTER_ADDRESSES;
316 typedef IP_ADAPTER_ADDRESSES_LH *PIP_ADAPTER_ADDRESSES;
318 #define GAA_FLAG_SKIP_UNICAST 0x00000001
319 #define GAA_FLAG_SKIP_ANYCAST 0x00000002
320 #define GAA_FLAG_SKIP_MULTICAST 0x00000004
321 #define GAA_FLAG_SKIP_DNS_SERVER 0x00000008
322 #define GAA_FLAG_INCLUDE_PREFIX 0x00000010
323 #define GAA_FLAG_SKIP_FRIENDLY_NAME 0x00000020
324 #define GAA_FLAG_INCLUDE_WINS_INFO 0x00000040
325 #define GAA_FLAG_INCLUDE_ALL_GATEWAYS 0x00000080
326 #define GAA_FLAG_INCLUDE_ALL_INTERFACES 0x00000100
327 #define GAA_FLAG_INCLUDE_ALL_COMPARTMENTS 0x00000200
328 #define GAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER 0x00000400
330 #endif /* _WINSOCK2API_ */
332 #endif /* WINE_IPTYPES_H_*/