dmime: Remove DECLSPEC_HIDDEN usage.
[wine.git] / include / iphlpapi.h
blob35e0f1348993e90598a52bfbe04cd2a8adcbcdf2
1 /* WINE iphlpapi.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
18 #ifndef WINE_IPHLPAPI_H__
19 #define WINE_IPHLPAPI_H__
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
25 #include <iprtrmib.h>
26 #include <ipexport.h>
27 #include <iptypes.h>
28 #include <tcpestats.h>
30 #define NET_STRING_IPV4_ADDRESS 0x00000001
31 #define NET_STRING_IPV4_SERVICE 0x00000002
32 #define NET_STRING_IPV4_NETWORK 0x00000004
33 #define NET_STRING_IPV6_ADDRESS 0x00000008
34 #define NET_STRING_IPV6_ADDRESS_NO_SCOPE 0x00000010
35 #define NET_STRING_IPV6_SERVICE 0x00000020
36 #define NET_STRING_IPV6_SERVICE_NO_SCOPE 0x00000040
37 #define NET_STRING_IPV6_NETWORK 0x00000080
38 #define NET_STRING_NAMED_ADDRESS 0x00000100
39 #define NET_STRING_NAMED_SERVICE 0x00000200
40 #define NET_STRING_IP_ADDRESS (NET_STRING_IPV4_ADDRESS|NET_STRING_IPV6_ADDRESS)
41 #define NET_STRING_IP_ADDRESS_NO_SCOPE (NET_STRING_IPV4_ADDRESS|NET_STRING_IPV6_ADDRESS_NO_SCOPE)
42 #define NET_STRING_IP_SERVICE (NET_STRING_IPV4_SERVICE|NET_STRING_IPV6_SERVICE)
43 #define NET_STRING_IP_SERVICE_NO_SCOPE (NET_STRING_IPV4_SERVICE|NET_STRING_IPV6_SERVICE_NO_SCOPE)
44 #define NET_STRING_IP_NETWORK (NET_STRING_IPV4_NETWORK|NET_STRING_IPV6_NETWORK)
45 #define NET_STRING_ANY_ADDRESS (NET_STRING_NAMED_ADDRESS|NET_STRING_IP_ADDRESS)
46 #define NET_STRING_ANY_ADDRESS_NO_SCOPE (NET_STRING_NAMED_ADDRESS|NET_STRING_IP_ADDRESS_NO_SCOPE)
47 #define NET_STRING_ANY_SERVICE (NET_STRING_NAMED_SERVICE|NET_STRING_IP_SERVICE)
48 #define NET_STRING_ANY_SERVICE_NO_SCOPE (NET_STRING_NAMED_SERVICE|NET_STRING_IP_SERVICE_NO_SCOPE)
50 DWORD WINAPI GetExtendedTcpTable(PVOID pTcpTable, PDWORD pdwSize, BOOL bOrder,
51 ULONG ulAf, TCP_TABLE_CLASS TableClass, ULONG Reserved);
53 DWORD WINAPI GetExtendedUdpTable(PVOID pUdpTable, PDWORD pdwSize, BOOL bOrder,
54 ULONG ulAf, UDP_TABLE_CLASS TableClass, ULONG Reserved);
56 DWORD WINAPI GetNumberOfInterfaces(PDWORD pdwNumIf);
58 DWORD WINAPI GetIfEntry(PMIB_IFROW pIfRow);
60 DWORD WINAPI GetIfTable(PMIB_IFTABLE pIfTable, PULONG pdwSize, BOOL bOrder);
62 DWORD WINAPI GetIpAddrTable(PMIB_IPADDRTABLE pIpAddrTable, PULONG pdwSize,
63 BOOL bOrder);
65 DWORD WINAPI GetIpNetTable(PMIB_IPNETTABLE pIpNetTable, PULONG pdwSize,
66 BOOL bOrder);
68 DWORD WINAPI GetIpForwardTable(PMIB_IPFORWARDTABLE pIpForwardTable,
69 PULONG pdwSize, BOOL bOrder);
71 DWORD WINAPI GetTcpTable(PMIB_TCPTABLE pTcpTable, PDWORD pdwSize, BOOL bOrder);
73 DWORD WINAPI GetUdpTable(PMIB_UDPTABLE pUdpTable, PDWORD pdwSize, BOOL bOrder);
75 DWORD WINAPI GetUdp6Table(PMIB_UDP6TABLE pUdpTable, PDWORD pdwSize, BOOL bOrder);
77 DWORD WINAPI GetIpStatistics(PMIB_IPSTATS pStats);
79 DWORD WINAPI GetIpStatisticsEx(PMIB_IPSTATS pStats, DWORD dwFamily);
81 DWORD WINAPI GetIcmpStatistics(PMIB_ICMP pStats);
83 DWORD WINAPI GetIcmpStatisticsEx(PMIB_ICMP_EX pStats, DWORD dwFamily);
85 DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS pStats);
87 DWORD WINAPI GetTcpStatisticsEx(PMIB_TCPSTATS pStats, DWORD dwFamily);
89 ULONG WINAPI GetPerTcpConnectionEStats(MIB_TCPROW *row, TCP_ESTATS_TYPE stats, UCHAR *rw, ULONG rw_version,
90 ULONG rw_size, UCHAR *ro_static, ULONG ro_static_version,
91 ULONG ro_static_size, UCHAR *ro_dynamic, ULONG ro_dynamic_version,
92 ULONG ro_dynamic_size);
94 DWORD WINAPI GetUdpStatistics(PMIB_UDPSTATS pStats);
96 DWORD WINAPI GetUdpStatisticsEx(PMIB_UDPSTATS pStats, DWORD dwFamily);
98 DWORD WINAPI SetIfEntry(PMIB_IFROW pIfRow);
100 DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW pRoute);
102 DWORD WINAPI SetIpForwardEntry(PMIB_IPFORWARDROW pRoute);
104 DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW pRoute);
106 DWORD WINAPI SetIpStatistics(PMIB_IPSTATS pIpStats);
108 DWORD WINAPI SetPerTcpConnectionEStats(MIB_TCPROW *row, TCP_ESTATS_TYPE state, BYTE *rw,
109 ULONG version, ULONG size, ULONG offset);
111 DWORD WINAPI SetIpTTL(UINT nTTL);
113 DWORD WINAPI CreateIpNetEntry(PMIB_IPNETROW pArpEntry);
115 DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW pArpEntry);
117 DWORD WINAPI DeleteIpNetEntry(PMIB_IPNETROW pArpEntry);
119 DWORD WINAPI FlushIpNetTable(DWORD dwIfIndex);
121 DWORD WINAPI CreateProxyArpEntry(DWORD dwAddress, DWORD dwMask,
122 DWORD dwIfIndex);
124 DWORD WINAPI DeleteProxyArpEntry(DWORD dwAddress, DWORD dwMask,
125 DWORD dwIfIndex);
127 DWORD WINAPI SetTcpEntry(PMIB_TCPROW pTcpRow);
129 DWORD WINAPI GetInterfaceInfo(PIP_INTERFACE_INFO pIfTable, PULONG dwOutBufLen);
131 DWORD WINAPI GetUniDirectionalAdapterInfo(
132 PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo, PULONG dwOutBufLen);
134 DWORD WINAPI GetBestInterface(IPAddr dwDestAddr, PDWORD pdwBestIfIndex);
136 #ifdef __WINE_WINSOCKAPI_STDLIB_H
137 DWORD WINAPI GetBestInterfaceEx(
138 #ifdef USE_WS_PREFIX
139 struct WS_sockaddr *pDestAddr,
140 #else
141 struct sockaddr *pDestAddr,
142 #endif
143 PDWORD pdwBestIfIndex);
144 #endif
146 DWORD WINAPI GetBestRoute(DWORD dwDestAddr, DWORD dwSourceAddr,
147 PMIB_IPFORWARDROW pBestRoute);
149 DWORD WINAPI NotifyAddrChange(PHANDLE Handle, LPOVERLAPPED overlapped);
151 DWORD WINAPI NotifyRouteChange(PHANDLE Handle, LPOVERLAPPED overlapped);
153 BOOL WINAPI CancelIPChangeNotify(LPOVERLAPPED overlapped);
155 DWORD WINAPI GetAdapterIndex(IN LPWSTR AdapterName, OUT PULONG IfIndex);
157 DWORD WINAPI AddIPAddress(IPAddr Address, IPMask IpMask, DWORD IfIndex,
158 PULONG NTEContext, PULONG NTEInstance);
160 DWORD WINAPI DeleteIPAddress(ULONG NTEContext);
162 DWORD WINAPI GetNetworkParams(PFIXED_INFO pFixedInfo, PULONG pOutBufLen);
164 DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen);
166 DWORD WINAPI GetPerAdapterInfo(ULONG IfIndex,
167 PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen);
169 DWORD WINAPI IpReleaseAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo);
171 DWORD WINAPI IpRenewAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo);
173 DWORD WINAPI SendARP(IPAddr DestIP, IPAddr SrcIP, PULONG pMacAddr,
174 PULONG PhyAddrLen);
176 BOOL WINAPI GetRTTAndHopCount(IPAddr DestIpAddress, PULONG HopCount,
177 ULONG MaxHops, PULONG RTT);
179 DWORD WINAPI GetFriendlyIfIndex(DWORD IfIndex);
181 DWORD WINAPI EnableRouter(HANDLE* pHandle, OVERLAPPED* pOverlapped);
183 DWORD WINAPI UnenableRouter(OVERLAPPED* pOverlapped, LPDWORD lpdwEnableCount);
185 #ifdef _WINSOCK2API_
186 ULONG WINAPI GetAdaptersAddresses(ULONG family, ULONG flags, PVOID reserved,
187 PIP_ADAPTER_ADDRESSES aa, PULONG buflen);
188 #endif
190 DWORD WINAPI AllocateAndGetUdpTableFromStack(PMIB_UDPTABLE *ppUdpTable, BOOL bOrder, HANDLE heap, DWORD flags);
191 DWORD WINAPI AllocateAndGetTcpTableFromStack(PMIB_TCPTABLE *ppTcpTable, BOOL bOrder, HANDLE heap, DWORD flags);
192 DWORD WINAPI AllocateAndGetTcpExTableFromStack(VOID **ppTcpTable, BOOL bOrder, HANDLE heap, DWORD flags, DWORD family);
193 DWORD WINAPI AllocateAndGetIpNetTableFromStack(PMIB_IPNETTABLE *ppIpNetTable, BOOL bOrder, HANDLE heap, DWORD flags);
194 DWORD WINAPI AllocateAndGetIpForwardTableFromStack(PMIB_IPFORWARDTABLE *ppIpForwardTable, BOOL bOrder, HANDLE heap, DWORD flags);
196 typedef enum NET_ADDRESS_FORMAT_ {
197 NET_ADDRESS_FORMAT_UNSPECIFIED,
198 NET_ADDRESS_DNS_NAME,
199 NET_ADDRESS_IPV4,
200 NET_ADDRESS_IPV6,
201 } NET_ADDRESS_FORMAT;
203 #ifdef __WINE_WINDNS_H
205 typedef struct NET_ADDRESS_INFO_
207 NET_ADDRESS_FORMAT Format;
208 union
210 struct
212 WCHAR Address[DNS_MAX_NAME_BUFFER_LENGTH];
213 WCHAR Port[6];
214 } NamedAddress;
215 SOCKADDR_IN Ipv4Address;
216 SOCKADDR_IN6 Ipv6Address;
217 SOCKADDR IpAddress;
218 } DUMMYUNIONNAME;
219 } NET_ADDRESS_INFO, *PNET_ADDRESS_INFO;
221 #endif /* __WINE_WINDNS_H */
223 #ifdef __cplusplus
225 #endif
227 #endif /* WINE_IPHLPAPI_H__ */