/***********************************************************************\
*                               iphlpapi.d                              *
*                                                                       *
*                       Windows API header module                       *
*                                                                       *
*                 Translated from MinGW Windows headers                 *
*                           by Stewart Gordon                           *
*                                                                       *
*                       Placed into public domain                       *
\***********************************************************************/
module win32.iphlpapi;

import win32.ipexport, win32.iprtrmib, win32.iptypes;
private import win32.winbase, win32.windef;

extern (Windows) {
	DWORD AddIPAddress(IPAddr, IPMask, DWORD, PULONG, PULONG);
	DWORD CreateIpForwardEntry(PMIB_IPFORWARDROW);
	DWORD CreateIpNetEntry(PMIB_IPNETROW);
	DWORD CreateProxyArpEntry(DWORD, DWORD, DWORD);
	DWORD DeleteIPAddress(ULONG);
	DWORD DeleteIpForwardEntry(PMIB_IPFORWARDROW);
	DWORD DeleteIpNetEntry(PMIB_IPNETROW);
	DWORD DeleteProxyArpEntry(DWORD, DWORD, DWORD);
	DWORD EnableRouter(HANDLE*, OVERLAPPED*);
	DWORD FlushIpNetTable(DWORD);
	DWORD GetAdapterIndex(LPWSTR, PULONG);
	DWORD GetAdaptersInfo(PIP_ADAPTER_INFO, PULONG);
	DWORD GetBestInterface(IPAddr, PDWORD);
	DWORD GetBestRoute(DWORD, DWORD, PMIB_IPFORWARDROW);
	DWORD GetFriendlyIfIndex(DWORD);
	DWORD GetIcmpStatistics(PMIB_ICMP);
	DWORD GetIfEntry(PMIB_IFROW);
	DWORD GetIfTable(PMIB_IFTABLE, PULONG, BOOL);
	DWORD GetInterfaceInfo(PIP_INTERFACE_INFO, PULONG);
	DWORD GetIpAddrTable(PMIB_IPADDRTABLE, PULONG, BOOL);
	DWORD GetIpForwardTable(PMIB_IPFORWARDTABLE, PULONG, BOOL);
	DWORD GetIpNetTable(PMIB_IPNETTABLE, PULONG, BOOL);
	DWORD GetIpStatistics(PMIB_IPSTATS);
	DWORD GetNetworkParams(PFIXED_INFO, PULONG);
	DWORD GetNumberOfInterfaces(PDWORD);
	DWORD GetPerAdapterInfo(ULONG, PIP_PER_ADAPTER_INFO, PULONG);
	BOOL GetRTTAndHopCount(IPAddr, PULONG, ULONG, PULONG);
	DWORD GetTcpStatistics(PMIB_TCPSTATS);
	DWORD GetTcpTable(PMIB_TCPTABLE, PDWORD, BOOL);
	DWORD GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS,
	  PULONG);
	DWORD GetUdpStatistics(PMIB_UDPSTATS);
	DWORD GetUdpTable(PMIB_UDPTABLE, PDWORD, BOOL);
	DWORD IpReleaseAddress(PIP_ADAPTER_INDEX_MAP);
	DWORD IpRenewAddress(PIP_ADAPTER_INDEX_MAP);
	DWORD NotifyAddrChange(PHANDLE, LPOVERLAPPED);
	DWORD NotifyRouteChange(PHANDLE, LPOVERLAPPED);
	DWORD SendARP(IPAddr, IPAddr, PULONG, PULONG);
	DWORD SetIfEntry(PMIB_IFROW);
	DWORD SetIpForwardEntry(PMIB_IPFORWARDROW);
	DWORD SetIpNetEntry(PMIB_IPNETROW);
	DWORD SetIpStatistics(PMIB_IPSTATS);
	DWORD SetIpTTL(UINT);
	DWORD SetTcpEntry(PMIB_TCPROW);
	DWORD UnenableRouter(OVERLAPPED*, LPDWORD);
}
