include: Add declarations for metadata handler info interfaces.
[wine] / include / 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*/