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__
28 #include <tcpestats.h>
30 #ifndef IPHLPAPI_DLL_LINKAGE
31 #define IPHLPAPI_DLL_LINKAGE DECLSPEC_IMPORT
34 #define NET_STRING_IPV4_ADDRESS 0x00000001
35 #define NET_STRING_IPV4_SERVICE 0x00000002
36 #define NET_STRING_IPV4_NETWORK 0x00000004
37 #define NET_STRING_IPV6_ADDRESS 0x00000008
38 #define NET_STRING_IPV6_ADDRESS_NO_SCOPE 0x00000010
39 #define NET_STRING_IPV6_SERVICE 0x00000020
40 #define NET_STRING_IPV6_SERVICE_NO_SCOPE 0x00000040
41 #define NET_STRING_IPV6_NETWORK 0x00000080
42 #define NET_STRING_NAMED_ADDRESS 0x00000100
43 #define NET_STRING_NAMED_SERVICE 0x00000200
44 #define NET_STRING_IP_ADDRESS (NET_STRING_IPV4_ADDRESS|NET_STRING_IPV6_ADDRESS)
45 #define NET_STRING_IP_ADDRESS_NO_SCOPE (NET_STRING_IPV4_ADDRESS|NET_STRING_IPV6_ADDRESS_NO_SCOPE)
46 #define NET_STRING_IP_SERVICE (NET_STRING_IPV4_SERVICE|NET_STRING_IPV6_SERVICE)
47 #define NET_STRING_IP_SERVICE_NO_SCOPE (NET_STRING_IPV4_SERVICE|NET_STRING_IPV6_SERVICE_NO_SCOPE)
48 #define NET_STRING_IP_NETWORK (NET_STRING_IPV4_NETWORK|NET_STRING_IPV6_NETWORK)
49 #define NET_STRING_ANY_ADDRESS (NET_STRING_NAMED_ADDRESS|NET_STRING_IP_ADDRESS)
50 #define NET_STRING_ANY_ADDRESS_NO_SCOPE (NET_STRING_NAMED_ADDRESS|NET_STRING_IP_ADDRESS_NO_SCOPE)
51 #define NET_STRING_ANY_SERVICE (NET_STRING_NAMED_SERVICE|NET_STRING_IP_SERVICE)
52 #define NET_STRING_ANY_SERVICE_NO_SCOPE (NET_STRING_NAMED_SERVICE|NET_STRING_IP_SERVICE_NO_SCOPE)
54 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetExtendedTcpTable(PVOID pTcpTable
, PDWORD pdwSize
, BOOL bOrder
, ULONG ulAf
, TCP_TABLE_CLASS TableClass
, ULONG Reserved
);
55 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetExtendedUdpTable(PVOID pUdpTable
, PDWORD pdwSize
, BOOL bOrder
, ULONG ulAf
, UDP_TABLE_CLASS TableClass
, ULONG Reserved
);
56 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetNumberOfInterfaces(PDWORD pdwNumIf
);
57 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetIfEntry(PMIB_IFROW pIfRow
);
58 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetIfTable(PMIB_IFTABLE pIfTable
, PULONG pdwSize
, BOOL bOrder
);
59 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetIpAddrTable(PMIB_IPADDRTABLE pIpAddrTable
, PULONG pdwSize
, BOOL bOrder
);
60 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetIpNetTable(PMIB_IPNETTABLE pIpNetTable
, PULONG pdwSize
, BOOL bOrder
);
61 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetIpForwardTable(PMIB_IPFORWARDTABLE pIpForwardTable
, PULONG pdwSize
, BOOL bOrder
);
62 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetTcpTable(PMIB_TCPTABLE pTcpTable
, PDWORD pdwSize
, BOOL bOrder
);
63 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetUdpTable(PMIB_UDPTABLE pUdpTable
, PDWORD pdwSize
, BOOL bOrder
);
64 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetUdp6Table(PMIB_UDP6TABLE pUdpTable
, PDWORD pdwSize
, BOOL bOrder
);
65 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetIpStatistics(PMIB_IPSTATS pStats
);
66 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetIpStatisticsEx(PMIB_IPSTATS pStats
, DWORD dwFamily
);
67 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetIcmpStatistics(PMIB_ICMP pStats
);
68 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetIcmpStatisticsEx(PMIB_ICMP_EX pStats
, DWORD dwFamily
);
69 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetTcpStatistics(PMIB_TCPSTATS pStats
);
70 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetTcpStatisticsEx(PMIB_TCPSTATS pStats
, DWORD dwFamily
);
71 IPHLPAPI_DLL_LINKAGE ULONG WINAPI
GetPerTcpConnectionEStats(MIB_TCPROW
*row
, TCP_ESTATS_TYPE stats
, UCHAR
*rw
, ULONG rw_version
,
72 ULONG rw_size
, UCHAR
*ro_static
, ULONG ro_static_version
,
73 ULONG ro_static_size
, UCHAR
*ro_dynamic
, ULONG ro_dynamic_version
,
74 ULONG ro_dynamic_size
);
75 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetUdpStatistics(PMIB_UDPSTATS pStats
);
76 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetUdpStatisticsEx(PMIB_UDPSTATS pStats
, DWORD dwFamily
);
77 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
SetIfEntry(PMIB_IFROW pIfRow
);
78 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
CreateIpForwardEntry(PMIB_IPFORWARDROW pRoute
);
79 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
SetIpForwardEntry(PMIB_IPFORWARDROW pRoute
);
80 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
DeleteIpForwardEntry(PMIB_IPFORWARDROW pRoute
);
81 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
SetIpStatistics(PMIB_IPSTATS pIpStats
);
82 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
SetPerTcpConnectionEStats(MIB_TCPROW
*row
, TCP_ESTATS_TYPE state
, BYTE
*rw
, ULONG version
, ULONG size
, ULONG offset
);
83 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
SetIpTTL(UINT nTTL
);
84 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
CreateIpNetEntry(PMIB_IPNETROW pArpEntry
);
85 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
SetIpNetEntry(PMIB_IPNETROW pArpEntry
);
86 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
DeleteIpNetEntry(PMIB_IPNETROW pArpEntry
);
87 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
FlushIpNetTable(DWORD dwIfIndex
);
88 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
CreateProxyArpEntry(DWORD dwAddress
, DWORD dwMask
, DWORD dwIfIndex
);
89 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
DeleteProxyArpEntry(DWORD dwAddress
, DWORD dwMask
, DWORD dwIfIndex
);
90 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
SetTcpEntry(PMIB_TCPROW pTcpRow
);
91 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetInterfaceInfo(PIP_INTERFACE_INFO pIfTable
, PULONG dwOutBufLen
);
92 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo
, PULONG dwOutBufLen
);
93 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetBestInterface(IPAddr dwDestAddr
, PDWORD pdwBestIfIndex
);
95 #ifdef __WINE_WINSOCKAPI_STDLIB_H
96 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetBestInterfaceEx(
98 struct WS_sockaddr
*pDestAddr
,
100 struct sockaddr
*pDestAddr
,
102 PDWORD pdwBestIfIndex
);
105 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetBestRoute(DWORD dwDestAddr
, DWORD dwSourceAddr
, PMIB_IPFORWARDROW pBestRoute
);
106 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
NotifyAddrChange(PHANDLE Handle
, LPOVERLAPPED overlapped
);
107 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
NotifyRouteChange(PHANDLE Handle
, LPOVERLAPPED overlapped
);
108 IPHLPAPI_DLL_LINKAGE BOOL WINAPI
CancelIPChangeNotify(LPOVERLAPPED overlapped
);
109 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetAdapterIndex(IN LPWSTR AdapterName
, OUT PULONG IfIndex
);
110 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
AddIPAddress(IPAddr Address
, IPMask IpMask
, DWORD IfIndex
, PULONG NTEContext
, PULONG NTEInstance
);
111 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
DeleteIPAddress(ULONG NTEContext
);
112 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetNetworkParams(PFIXED_INFO pFixedInfo
, PULONG pOutBufLen
);
113 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo
, PULONG pOutBufLen
);
114 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetPerAdapterInfo(ULONG IfIndex
, PIP_PER_ADAPTER_INFO pPerAdapterInfo
, PULONG pOutBufLen
);
115 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
IpReleaseAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo
);
116 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
IpRenewAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo
);
117 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
SendARP(IPAddr DestIP
, IPAddr SrcIP
, PULONG pMacAddr
, PULONG PhyAddrLen
);
118 IPHLPAPI_DLL_LINKAGE BOOL WINAPI
GetRTTAndHopCount(IPAddr DestIpAddress
, PULONG HopCount
, ULONG MaxHops
, PULONG RTT
);
119 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
GetFriendlyIfIndex(DWORD IfIndex
);
120 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
EnableRouter(HANDLE
* pHandle
, OVERLAPPED
* pOverlapped
);
121 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
UnenableRouter(OVERLAPPED
* pOverlapped
, LPDWORD lpdwEnableCount
);
124 IPHLPAPI_DLL_LINKAGE ULONG WINAPI
GetAdaptersAddresses(ULONG family
, ULONG flags
, PVOID reserved
,
125 PIP_ADAPTER_ADDRESSES aa
, PULONG buflen
);
128 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
AllocateAndGetUdpTableFromStack(PMIB_UDPTABLE
*ppUdpTable
, BOOL bOrder
, HANDLE heap
, DWORD flags
);
129 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
AllocateAndGetTcpTableFromStack(PMIB_TCPTABLE
*ppTcpTable
, BOOL bOrder
, HANDLE heap
, DWORD flags
);
130 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
AllocateAndGetTcpExTableFromStack(VOID
**ppTcpTable
, BOOL bOrder
, HANDLE heap
, DWORD flags
, DWORD family
);
131 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
AllocateAndGetIpNetTableFromStack(PMIB_IPNETTABLE
*ppIpNetTable
, BOOL bOrder
, HANDLE heap
, DWORD flags
);
132 IPHLPAPI_DLL_LINKAGE DWORD WINAPI
AllocateAndGetIpForwardTableFromStack(PMIB_IPFORWARDTABLE
*ppIpForwardTable
, BOOL bOrder
, HANDLE heap
, DWORD flags
);
134 typedef enum NET_ADDRESS_FORMAT_
{
135 NET_ADDRESS_FORMAT_UNSPECIFIED
,
136 NET_ADDRESS_DNS_NAME
,
139 } NET_ADDRESS_FORMAT
;
141 #ifdef __WINE_WINDNS_H
143 typedef struct NET_ADDRESS_INFO_
145 NET_ADDRESS_FORMAT Format
;
150 WCHAR Address
[DNS_MAX_NAME_BUFFER_LENGTH
];
153 SOCKADDR_IN Ipv4Address
;
154 SOCKADDR_IN6 Ipv6Address
;
157 } NET_ADDRESS_INFO
, *PNET_ADDRESS_INFO
;
159 #endif /* __WINE_WINDNS_H */
165 #endif /* WINE_IPHLPAPI_H__ */