[PSDK] Attempt to improve the whole iphlpapi related headers situation. CORE-7685...
[reactos.git] / reactos / include / psdk / ifdef.h
1 /* WINE ifdef.h
2 * Copyright 2010 Juan Lang
3 *
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.
8 *
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.
13 *
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
17 */
18 #ifndef WINE_IFDEF_H
19 #define WINE_IFDEF_H
20
21 #include <ipifcons.h>
22
23 typedef ULONG32 NET_IF_OBJECT_ID, *PNET_IF_OBJECT_ID;
24 typedef UINT32 NET_IF_COMPARTMENT_ID, *PNET_IF_COMPARTMENT_ID;
25 typedef GUID NET_IF_NETWORK_GUID, *PNET_IF_NETWORK_GUID;
26 typedef ULONG NET_IFINDEX, *PNET_IFINDEX;
27 typedef NET_IFINDEX IF_INDEX, *PIF_INDEX;
28 typedef UINT16 NET_IFTYPE, *PNET_IFTYPE;
29
30 #define NET_IF_OPER_STATUS_DOWN_NOT_AUTHENTICATED 0x00000001
31 #define NET_IF_OPER_STATUS_DOWN_NOT_MEDIA_CONNECTED 0x00000002
32 #define NET_IF_OPER_STATUS_DORMANT_PAUSED 0x00000004
33 #define NET_IF_OPER_STATUS_DORMANT_LOW_POWER 0x00000008
34
35 #define NET_IF_COMPARTMENT_ID_UNSPECIFIED 0
36 #define NET_IF_COMPARTMENT_ID_PRIMARY 1
37
38 #define NET_IF_OID_IF_ALIAS 0x00000001
39 #define NET_IF_OID_COMPARTMENT_ID 0x00000002
40 #define NET_IF_OID_NETWORK_GUID 0x00000003
41 #define NET_IF_OID_IF_ENTRY 0x00000004
42
43 #define NET_SET_UNSPECIFIED_NETWORK_GUID(x)
44 #define NET_IS_UNSPECIFIED_NETWORK_GUID(x)
45
46 #define NET_SITEID_UNSPECIFIED 0
47 #define NET_SITEID_MAXUSER 0x07ffffff
48 #define NET_SITEID_MAXSYSTEM 0x0fffffff
49
50 #define NET_IFINDEX_UNSPECIFIED 0
51 #define IFI_UNSPECIFIED NET_IFINDEX_UNSPECIFIED
52
53 #define NET_IFLUID_UNSPECIFIED 0
54
55 #define NIIF_HARDWARE_INTERFACE 0x00000001
56 #define NIIF_FILTER_INTERFACE 0x00000002
57 #define NIIF_NDIS_WDM_INTERFACE 0x00000020
58 #define NIIF_NDIS_ENDPOINT_INTERFACE 0x00000040
59 #define NIIF_NDIS_ISCSI_INTERFACE 0x00000080
60 #define NIIF_WAN_TUNNEL_TYPE_UNKNOWN 0xffffffff
61
62 #define NET_BUS_NUMBER_UNKNOWN 0xffffffff
63 #define NET_SLOT_NUMBER_UNKNOWN 0xffffffff
64 #define NET_FUNCTION_NUMBER_UNKNOWN 0xffffffff
65
66 #define IF_MAX_STRING_SIZE 256
67 #define IF_MAX_PHYS_ADDRESS_LENGTH 32
68
69 typedef enum _NET_IF_ADMIN_STATUS {
70 NET_IF_ADMIN_STATUS_UP = 1,
71 NET_IF_ADMIN_STATUS_DOWN = 2,
72 NET_IF_ADMIN_STATUS_TESTING = 3
73 } NET_IF_ADMIN_STATUS, *PNET_IF_ADMIN_STATUS;
74
75 typedef enum _NET_IF_OPER_STATUS {
76 NET_IF_OPER_STATUS_UP = 1,
77 NET_IF_OPER_STATUS_DOWN = 2,
78 NET_IF_OPER_STATUS_TESTING = 3,
79 NET_IF_OPER_STATUS_UNKNOWN = 4,
80 NET_IF_OPER_STATUS_DORMANT = 5,
81 NET_IF_OPER_STATUS_NOT_PRESENT = 6,
82 NET_IF_OPER_STATUS_LOWER_LAYER_DOWN = 7
83 } NET_IF_OPER_STATUS, *PNET_IF_OPER_STATUS;
84
85 typedef enum _NET_IF_RCV_ADDRESS_TYPE {
86 NET_IF_RCV_ADDRESS_TYPE_OTHER = 1,
87 NET_IF_RCV_ADDRESS_TYPE_VOLATILE = 2,
88 NET_IF_RCV_ADDRESS_TYPE_NON_VOLATILE = 3
89 } NET_IF_RCV_ADDRESS_TYPE, *PNET_IF_RCV_ADDRESS_TYPE;
90
91 typedef struct _NET_IF_RCV_ADDRESS_LH {
92 NET_IF_RCV_ADDRESS_TYPE ifRcvAddressType;
93 USHORT ifRcvAddressLength;
94 USHORT ifRcvAddressOffset;
95 } NET_IF_RCV_ADDRESS_LH, *PNET_IF_RCV_ADDRESS_LH;
96 typedef NET_IF_RCV_ADDRESS_LH NET_IF_RCV_ADDRESS;
97 typedef NET_IF_RCV_ADDRESS_LH *PNET_IF_RCV_ADDRESS;
98
99 typedef union _NET_LUID_LH {
100 ULONG64 Value;
101 struct {
102 ULONG64 Reserved : 24;
103 ULONG64 NetLuidIndex : 24;
104 ULONG64 IfType : 16;
105 } Info;
106 } NET_LUID_LH, *PNET_LUID_LH;
107 typedef NET_LUID_LH NET_LUID;
108 typedef NET_LUID *PNET_LUID;
109 typedef NET_LUID IF_LUID;
110 typedef NET_LUID *PIF_LUID;
111
112 typedef enum _NET_IF_ACCESS_TYPE {
113 NET_IF_ACCESS_LOOPBACK = 1,
114 NET_IF_ACCESS_BROADCAST = 2,
115 NET_IF_ACCESS_POINT_TO_POINT = 2,
116 NET_IF_ACCESS_POINT_TO_MULTI_POINT = 4,
117 NET_IF_ACCESS_MAXIMUM = 5
118 } NET_IF_ACCESS_TYPE, *PNET_IF_ACCESS_TYPE;
119
120 typedef enum _NET_IF_DIRECTION_TYPE {
121 NET_IF_DIRECTION_SENDRECEIVE = 0,
122 NET_IF_DIRECTION_SENDONLY = 1,
123 NET_IF_DIRECTION_RECEIVEONLY = 2,
124 NET_IF_DIRECTION_MAXIMUM = 3
125 } NET_IF_DIRECTION_TYPE, *PNET_IF_DIRECTION_TYPE;
126
127 typedef enum _NET_IF_CONNECTION_TYPE {
128 NET_IF_CONNECTION_DEDICATED = 1,
129 NET_IF_CONNECTION_PASSIVE = 2,
130 NET_IF_CONNECTION_DEMAND = 3,
131 NET_IF_CONNECTION_MAXIMUM = 4,
132 } NET_IF_CONNECTION_TYPE, *PNET_IF_CONNECTION_TYPE;
133
134 typedef enum _NET_IF_MEDIA_CONNECT_STATE {
135 MediaConnectStateUnknown = 0,
136 MediaConnectStateConnected = 1,
137 MediaConnectStateDisconnected = 2
138 } NET_IF_MEDIA_CONNECT_STATE, *PNET_IF_MEDIA_CONNECT_STATE;
139
140 typedef enum _NET_IF_MEDIA_DUPLEX_STATE {
141 MediaDuplexStateUnknown = 0,
142 MediaDuplexStateHalf = 1,
143 MediaDuplexStateFull = 2
144 } NET_IF_MEDIA_DUPLEX_STATE, *PNET_IF_MEDIA_DUPLEX_STATE;
145
146 typedef struct _NET_PHYSICAL_LOCATION_LH {
147 ULONG BusNumber;
148 ULONG SlotNumber;
149 ULONG FunctionNumber;
150 } NET_PHYSICAL_LOCATION_LH, *PNET_PHYSICAL_LOCATION_LH;
151 typedef NET_PHYSICAL_LOCATION_LH NET_PHYSICAL_LOCATION;
152 typedef NET_PHYSICAL_LOCATION *PNET_PHYSICAL_LOCATION;
153
154 typedef struct _IF_COUNTED_STRING_LH {
155 USHORT Length;
156 WCHAR String[IF_MAX_STRING_SIZE + 1];
157 } IF_COUNTED_STRING_LH, *PIF_COUNTED_STRING_LH;
158 typedef IF_COUNTED_STRING_LH IF_COUNTED_STRING;
159 typedef IF_COUNTED_STRING *PIF_COUNTED_STRING;
160
161 typedef struct _IF_PHYSICAL_ADDRESS_LH {
162 USHORT Length;
163 UCHAR Address[IF_MAX_PHYS_ADDRESS_LENGTH];
164 } IF_PHYSICAL_ADDRESS_LH, *PIF_PHYSICAL_ADDRESS_LH;
165 typedef IF_PHYSICAL_ADDRESS_LH IF_PHYSICAL_ADDRESS;
166 typedef IF_PHYSICAL_ADDRESS *PIF_PHYSICAL_ADDRESS;
167
168 typedef enum {
169 TUNNEL_TYPE_NONE = 0,
170 TUNNEL_TYPE_OTHER = 1,
171 TUNNEL_TYPE_DIRECT = 2,
172 TUNNEL_TYPE_6TO4 = 11,
173 TUNNEL_TYPE_ISATAP = 13,
174 TUNNEL_TYPE_TEREDO = 14,
175 TUNNEL_TYPE_IPHTTPS = 15,
176 } TUNNEL_TYPE;
177
178 typedef enum _IF_ADMINISTRATIVE_STATE {
179 IF_ADMINISTRATIVE_STATE_DISABLED = 0,
180 IF_ADMINISTRATIVE_STATE_ENABLED = 1,
181 IF_ADMINISTRATIVE_STATE_DEMANDDIAL = 2
182 } IF_ADMINISTRATIVE_STATE, *PIF_ADMINISTRATIVE_STATE;
183
184 typedef enum {
185 IfOperStatusUp = 1,
186 IfOperStatusDown,
187 IfOperStatusTesting,
188 IfOperStatusUnknown,
189 IfOperStatusDormant,
190 IfOperStatusNotPresent,
191 IfOperStatusLowerLayerDown
192 } IF_OPER_STATUS;
193
194 typedef struct _NDIS_INTERFACE_INFORMATION {
195 NET_IF_OPER_STATUS ifOperStatus;
196 ULONG ifOperStatusFlags;
197 NET_IF_MEDIA_CONNECT_STATE MediaConnectState;
198 NET_IF_MEDIA_DUPLEX_STATE MediaDuplexState;
199 ULONG ifMtu;
200 BOOLEAN ifPromiscuousMode;
201 BOOLEAN ifDeviceWakeUpEnable;
202 ULONG64 XmitLinkSpeed;
203 ULONG64 RcvLinkSpeed;
204 ULONG64 ifLastChange;
205 ULONG64 ifCounterDiscontinuityTime;
206 ULONG64 ifInUnknownProtos;
207 ULONG64 ifInDiscards;
208 ULONG64 ifInErrors;
209 ULONG64 ifHCInOctets;
210 ULONG64 ifHCInUcastPkts;
211 ULONG64 ifHCInMulticastPkts;
212 ULONG64 ifHCInBroadcastPkts;
213 ULONG64 ifHCOutOctets;
214 ULONG64 ifHCOutUcastPkts;
215 ULONG64 ifHCOutMulticastPkts;
216 ULONG64 ifHCOutBroadcastPkts;
217 ULONG64 ifOutErrors;
218 ULONG64 ifOutDiscards;
219 ULONG64 ifHCInUcastOctets;
220 ULONG64 ifHCInMulticastOctets;
221 ULONG64 ifHCInBroadcastOctets;
222 ULONG64 ifHCOutUcastOctets;
223 ULONG64 ifHCOutMulticastOctets;
224 ULONG64 ifHCOutBroadcastOctets;
225 NET_IF_COMPARTMENT_ID CompartmentId;
226 ULONG SupportedStatistics;
227 } NDIS_INTERFACE_INFORMATION, *PNDIS_INTERFACE_INFORMATION;
228
229 #endif /* WINE_IFDEF_H*/