d2d1/effect: Implement offset transform object.
[wine.git] / include / netioapi.h
blobf49c670dac623d08bcddd950f6cad3eda4bd591d
1 /*
2 * Copyright 2015 Hans Leidekker for CodeWeavers
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_NETIOAPI_H
20 #define __WINE_NETIOAPI_H
22 #include <ntddndis.h>
24 #ifndef IPHLPAPI_DLL_LINKAGE
25 #define IPHLPAPI_DLL_LINKAGE DECLSPEC_IMPORT
26 #endif
28 #ifndef ANY_SIZE
29 #define ANY_SIZE 1
30 #endif
32 typedef enum _MIB_IF_TABLE_LEVEL
34 MibIfTableNormal,
35 MibIfTableRaw,
36 MibIfTableNormalWithoutStatistics,
37 } MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL;
39 typedef enum _MIB_NOTIFICATION_TYPE
41 MibParameterNotification,
42 MibAddInstance,
43 MibDeleteInstance,
44 MibInitialNotification,
45 } MIB_NOTIFICATION_TYPE, *PMIB_NOTIFICATION_TYPE;
47 typedef struct _MIB_IF_ROW2
49 NET_LUID InterfaceLuid;
50 NET_IFINDEX InterfaceIndex;
51 GUID InterfaceGuid;
52 WCHAR Alias[IF_MAX_STRING_SIZE + 1];
53 WCHAR Description[IF_MAX_STRING_SIZE + 1];
54 ULONG PhysicalAddressLength;
55 UCHAR PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
56 UCHAR PermanentPhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
57 ULONG Mtu;
58 IFTYPE Type;
59 TUNNEL_TYPE TunnelType;
60 NDIS_MEDIUM MediaType;
61 NDIS_PHYSICAL_MEDIUM PhysicalMediumType;
62 NET_IF_ACCESS_TYPE AccessType;
63 NET_IF_DIRECTION_TYPE DirectionType;
64 struct
66 BOOLEAN HardwareInterface : 1;
67 BOOLEAN FilterInterface : 1;
68 BOOLEAN ConnectorPresent : 1;
69 BOOLEAN NotAuthenticated : 1;
70 BOOLEAN NotMediaConnected : 1;
71 BOOLEAN Paused : 1;
72 BOOLEAN LowPower : 1;
73 BOOLEAN EndPointInterface : 1;
74 } InterfaceAndOperStatusFlags;
75 IF_OPER_STATUS OperStatus;
76 NET_IF_ADMIN_STATUS AdminStatus;
77 NET_IF_MEDIA_CONNECT_STATE MediaConnectState;
78 NET_IF_NETWORK_GUID NetworkGuid;
79 NET_IF_CONNECTION_TYPE ConnectionType;
80 ULONG64 TransmitLinkSpeed;
81 ULONG64 ReceiveLinkSpeed;
82 ULONG64 InOctets;
83 ULONG64 InUcastPkts;
84 ULONG64 InNUcastPkts;
85 ULONG64 InDiscards;
86 ULONG64 InErrors;
87 ULONG64 InUnknownProtos;
88 ULONG64 InUcastOctets;
89 ULONG64 InMulticastOctets;
90 ULONG64 InBroadcastOctets;
91 ULONG64 OutOctets;
92 ULONG64 OutUcastPkts;
93 ULONG64 OutNUcastPkts;
94 ULONG64 OutDiscards;
95 ULONG64 OutErrors;
96 ULONG64 OutUcastOctets;
97 ULONG64 OutMulticastOctets;
98 ULONG64 OutBroadcastOctets;
99 ULONG64 OutQLen;
100 } MIB_IF_ROW2, *PMIB_IF_ROW2;
102 typedef struct _MIB_IF_TABLE2
104 ULONG NumEntries;
105 MIB_IF_ROW2 Table[1];
106 } MIB_IF_TABLE2, *PMIB_IF_TABLE2;
108 typedef struct _MIB_IPINTERFACE_ROW
110 ADDRESS_FAMILY Family;
111 NET_LUID InterfaceLuid;
112 NET_IFINDEX InterfaceIndex;
113 ULONG MaxReassemblySize;
114 ULONG64 InterfaceIdentifier;
115 ULONG MinRouterAdvertisementInterval;
116 ULONG MaxRouterAdvertisementInterval;
117 BOOLEAN AdvertisingEnabled;
118 BOOLEAN ForwardingEnabled;
119 BOOLEAN WeakHostSend;
120 BOOLEAN WeakHostReceive;
121 BOOLEAN UseAutomaticMetric;
122 BOOLEAN UseNeighborUnreachabilityDetection;
123 BOOLEAN ManagedAddressConfigurationSupported;
124 BOOLEAN OtherStatefulConfigurationSupported;
125 BOOLEAN AdvertiseDefaultRoute;
126 NL_ROUTER_DISCOVERY_BEHAVIOR RouterDiscoveryBehavior;
127 ULONG DadTransmits;
128 ULONG BaseReachableTime;
129 ULONG RetransmitTime;
130 ULONG PathMtuDiscoveryTimeout;
131 NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior;
132 ULONG LinkLocalAddressTimeout;
133 ULONG ZoneIndices[ScopeLevelCount];
134 ULONG SitePrefixLength;
135 ULONG Metric;
136 ULONG NlMtu;
137 BOOLEAN Connected;
138 BOOLEAN SupportsWakeUpPatterns;
139 BOOLEAN SupportsNeighborDiscovery;
140 BOOLEAN SupportsRouterDiscovery;
141 ULONG ReachableTime;
142 NL_INTERFACE_OFFLOAD_ROD TransmitOffload;
143 NL_INTERFACE_OFFLOAD_ROD ReceiveOffload;
144 BOOLEAN DisableDefaultRoutes;
145 } MIB_IPINTERFACE_ROW, *PMIB_IPINTERFACE_ROW;
147 typedef struct _MIB_IPINTERFACE_TABLE
149 ULONG NumEntries;
150 MIB_IPINTERFACE_ROW Table[ANY_SIZE];
151 } MIB_IPINTERFACE_TABLE, *PMIB_IPINTERFACE_TABLE;
153 typedef struct _MIB_UNICASTIPADDRESS_ROW
155 SOCKADDR_INET Address;
156 NET_LUID InterfaceLuid;
157 NET_IFINDEX InterfaceIndex;
158 NL_PREFIX_ORIGIN PrefixOrigin;
159 NL_SUFFIX_ORIGIN SuffixOrigin;
160 ULONG ValidLifetime;
161 ULONG PreferredLifetime;
162 UINT8 OnLinkPrefixLength;
163 BOOLEAN SkipAsSource;
164 NL_DAD_STATE DadState;
165 SCOPE_ID ScopeId;
166 LARGE_INTEGER CreationTimeStamp;
167 } MIB_UNICASTIPADDRESS_ROW, *PMIB_UNICASTIPADDRESS_ROW;
169 typedef struct _MIB_UNICASTIPADDRESS_TABLE
171 ULONG NumEntries;
172 MIB_UNICASTIPADDRESS_ROW Table[1];
173 } MIB_UNICASTIPADDRESS_TABLE, *PMIB_UNICASTIPADDRESS_TABLE;
175 typedef struct _MIB_ANYCASTIPADDRESS_ROW
177 SOCKADDR_INET Address;
178 NET_LUID InterfaceLuid;
179 NET_IFINDEX InterfaceIndex;
180 SCOPE_ID ScopeId;
181 } MIB_ANYCASTIPADDRESS_ROW, *PMIB_ANYCASTIPADDRESS_ROW;
183 typedef struct _MIB_ANYCASTIPADDRESS_TABLE
185 ULONG NumEntries;
186 MIB_ANYCASTIPADDRESS_ROW Table[ANY_SIZE];
187 } MIB_ANYCASTIPADDRESS_TABLE, *PMIB_ANYCASTIPADDRESS_TABLE;
189 typedef struct _IP_ADDRESS_PREFIX
191 SOCKADDR_INET Prefix;
192 UINT8 PrefixLength;
193 } IP_ADDRESS_PREFIX, *PIP_ADDRESS_PREFIX;
195 typedef struct _MIB_IPFORWARD_ROW2
197 NET_LUID InterfaceLuid;
198 NET_IFINDEX InterfaceIndex;
199 IP_ADDRESS_PREFIX DestinationPrefix;
200 SOCKADDR_INET NextHop;
201 UCHAR SitePrefixLength;
202 ULONG ValidLifetime;
203 ULONG PreferredLifetime;
204 ULONG Metric;
205 NL_ROUTE_PROTOCOL Protocol;
206 BOOLEAN Loopback;
207 BOOLEAN AutoconfigureAddress;
208 BOOLEAN Publish;
209 BOOLEAN Immortal;
210 ULONG Age;
211 NL_ROUTE_ORIGIN Origin;
212 } MIB_IPFORWARD_ROW2, *PMIB_IPFORWARD_ROW2;
214 typedef struct _MIB_IPFORWARD_TABLE2
216 ULONG NumEntries;
217 MIB_IPFORWARD_ROW2 Table[ANY_SIZE];
218 } MIB_IPFORWARD_TABLE2, *PMIB_IPFORWARD_TABLE2;
220 typedef struct _MIB_IPNET_ROW2
222 SOCKADDR_INET Address;
223 NET_IFINDEX InterfaceIndex;
224 NET_LUID InterfaceLuid;
225 UCHAR PhysicalAddress[IF_MAX_PHYS_ADDRESS_LENGTH];
226 ULONG PhysicalAddressLength;
227 NL_NEIGHBOR_STATE State;
229 union
231 struct
233 BOOLEAN IsRouter : 1;
234 BOOLEAN IsUnreachable : 1;
235 } DUMMYSTRUCTNAME;
236 UCHAR Flags;
237 } DUMMYUNIONNAME;
239 union
241 ULONG LastReachable;
242 ULONG LastUnreachable;
243 } ReachabilityTime;
244 } MIB_IPNET_ROW2, *PMIB_IPNET_ROW2;
246 typedef struct _MIB_IPNET_TABLE2
248 ULONG NumEntries;
249 MIB_IPNET_ROW2 Table[ANY_SIZE];
250 } MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2;
252 typedef VOID (WINAPI *PIPINTERFACE_CHANGE_CALLBACK)(PVOID, PMIB_IPINTERFACE_ROW,
253 MIB_NOTIFICATION_TYPE);
254 typedef VOID (WINAPI *PUNICAST_IPADDRESS_CHANGE_CALLBACK)(PVOID, PMIB_UNICASTIPADDRESS_ROW,
255 MIB_NOTIFICATION_TYPE);
257 typedef VOID (WINAPI *PIPFORWARD_CHANGE_CALLBACK)(VOID*,MIB_IPFORWARD_ROW2*,MIB_NOTIFICATION_TYPE);
259 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceAliasToLuid(const WCHAR*,NET_LUID*);
260 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceGuidToLuid(const GUID*,NET_LUID*);
261 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceIndexToLuid(NET_IFINDEX,NET_LUID*);
262 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToAlias(const NET_LUID*,WCHAR*,SIZE_T);
263 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToGuid(const NET_LUID*,GUID*);
264 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToIndex(const NET_LUID*,NET_IFINDEX*);
265 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToNameA(const NET_LUID*,char*,SIZE_T);
266 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceLuidToNameW(const NET_LUID*,WCHAR*,SIZE_T);
267 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceNameToLuidA(const char*,NET_LUID*);
268 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertInterfaceNameToLuidW(const WCHAR*,NET_LUID*);
269 IPHLPAPI_DLL_LINKAGE DWORD WINAPI ConvertLengthToIpv4Mask(ULONG,ULONG*);
270 IPHLPAPI_DLL_LINKAGE void WINAPI FreeMibTable(void*);
271 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetAnycastIpAddressTable(ADDRESS_FAMILY,MIB_ANYCASTIPADDRESS_TABLE**);
272 IPHLPAPI_DLL_LINKAGE NET_IF_COMPARTMENT_ID WINAPI GetCurrentThreadCompartmentId(void);
273 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIfEntry2(MIB_IF_ROW2*);
274 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIfEntry2Ex(MIB_IF_TABLE_LEVEL,MIB_IF_ROW2*);
275 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIfTable2(MIB_IF_TABLE2**);
276 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIfTable2Ex(MIB_IF_TABLE_LEVEL,MIB_IF_TABLE2**);
277 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIpForwardEntry2(MIB_IPFORWARD_ROW2*);
278 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIpForwardTable2(ADDRESS_FAMILY,MIB_IPFORWARD_TABLE2**);
279 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIpInterfaceTable(ADDRESS_FAMILY,MIB_IPINTERFACE_TABLE**);
280 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIpNetEntry2(MIB_IPNET_ROW2*);
281 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetIpNetTable2(ADDRESS_FAMILY,MIB_IPNET_TABLE2**);
282 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetUnicastIpAddressEntry(MIB_UNICASTIPADDRESS_ROW*);
283 IPHLPAPI_DLL_LINKAGE DWORD WINAPI GetUnicastIpAddressTable(ADDRESS_FAMILY,MIB_UNICASTIPADDRESS_TABLE**);
284 IPHLPAPI_DLL_LINKAGE PCHAR WINAPI if_indextoname(NET_IFINDEX,PCHAR);
285 IPHLPAPI_DLL_LINKAGE NET_IFINDEX WINAPI if_nametoindex(PCSTR);
287 #endif /* __WINE_NETIOAPI_H */