/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #ifndef __IPHLPAPI_H__ #define __IPHLPAPI_H__ #ifdef __cplusplus extern "C" { #endif #include <iprtrmib.h> #include <ipexport.h> #include <iptypes.h> #include <netioapi.h> #include <tcpmib.h> #include <udpmib.h> #include <tcpestats.h> DWORD WINAPI GetNumberOfInterfaces(PDWORD pdwNumIf); DWORD WINAPI GetIfEntry(PMIB_IFROW pIfRow); DWORD WINAPI GetIfTable(PMIB_IFTABLE pIfTable,PULONG pdwSize,WINBOOL bOrder); DWORD WINAPI GetIpAddrTable(PMIB_IPADDRTABLE pIpAddrTable,PULONG pdwSize,WINBOOL bOrder); DWORD WINAPI GetIpNetTable(PMIB_IPNETTABLE pIpNetTable,PULONG pdwSize,WINBOOL bOrder); DWORD WINAPI GetIpForwardTable(PMIB_IPFORWARDTABLE pIpForwardTable,PULONG pdwSize,WINBOOL bOrder); DWORD WINAPI GetTcpTable(PMIB_TCPTABLE pTcpTable,PDWORD pdwSize,WINBOOL bOrder); DWORD WINAPI GetUdpTable(PMIB_UDPTABLE pUdpTable,PDWORD pdwSize,WINBOOL bOrder); DWORD WINAPI GetIpStatistics(PMIB_IPSTATS pStats); DWORD WINAPI GetIpStatisticsEx(PMIB_IPSTATS pStats,DWORD dwFamily); DWORD WINAPI GetIcmpStatistics(PMIB_ICMP pStats); DWORD WINAPI GetIcmpStatisticsEx(PMIB_ICMP_EX pStats,DWORD dwFamily); DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS pStats); DWORD WINAPI GetTcpStatisticsEx(PMIB_TCPSTATS pStats,DWORD dwFamily); DWORD WINAPI GetUdpStatistics(PMIB_UDPSTATS pStats); DWORD WINAPI GetUdpStatisticsEx(PMIB_UDPSTATS pStats,DWORD dwFamily); DWORD WINAPI SetIfEntry(PMIB_IFROW pIfRow); DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW pRoute); DWORD WINAPI SetIpForwardEntry(PMIB_IPFORWARDROW pRoute); DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW pRoute); DWORD WINAPI SetIpStatistics(PMIB_IPSTATS pIpStats); DWORD WINAPI SetIpTTL(UINT nTTL); DWORD WINAPI CreateIpNetEntry(PMIB_IPNETROW pArpEntry); DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW pArpEntry); DWORD WINAPI DeleteIpNetEntry(PMIB_IPNETROW pArpEntry); DWORD WINAPI FlushIpNetTable(DWORD dwIfIndex); DWORD WINAPI CreateProxyArpEntry(DWORD dwAddress,DWORD dwMask,DWORD dwIfIndex); DWORD WINAPI DeleteProxyArpEntry(DWORD dwAddress,DWORD dwMask,DWORD dwIfIndex); DWORD WINAPI SetTcpEntry(PMIB_TCPROW pTcpRow); DWORD WINAPI GetInterfaceInfo(PIP_INTERFACE_INFO pIfTable,PULONG dwOutBufLen); DWORD WINAPI GetUniDirectionalAdapterInfo(PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo,PULONG dwOutBufLen); #ifndef NhpAllocateAndGetInterfaceInfoFromStack_DEFINED #define NhpAllocateAndGetInterfaceInfoFromStack_DEFINED DWORD WINAPI NhpAllocateAndGetInterfaceInfoFromStack(IP_INTERFACE_NAME_INFO **ppTable,PDWORD pdwCount,WINBOOL bOrder,HANDLE hHeap,DWORD dwFlags); #endif DWORD WINAPI GetBestInterface(IPAddr dwDestAddr,PDWORD pdwBestIfIndex); DWORD WINAPI GetBestInterfaceEx(struct sockaddr *pDestAddr,PDWORD pdwBestIfIndex); DWORD WINAPI GetBestRoute(DWORD dwDestAddr,DWORD dwSourceAddr,PMIB_IPFORWARDROW pBestRoute); DWORD WINAPI GetExtendedTcpTable (PVOID pTcpTable,PDWORD pdwSize,BOOL bOrder,ULONG ulAf,TCP_TABLE_CLASS TableClass,ULONG Reserved); DWORD WINAPI NotifyAddrChange(PHANDLE Handle,LPOVERLAPPED overlapped); DWORD WINAPI NotifyRouteChange(PHANDLE Handle,LPOVERLAPPED overlapped); WINBOOL WINAPI CancelIPChangeNotify(LPOVERLAPPED notifyOverlapped); DWORD WINAPI GetAdapterIndex(LPWSTR AdapterName,PULONG IfIndex); DWORD WINAPI AddIPAddress(IPAddr Address,IPMask IpMask,DWORD IfIndex,PULONG NTEContext,PULONG NTEInstance); DWORD WINAPI DeleteIPAddress(ULONG NTEContext); DWORD WINAPI GetNetworkParams(PFIXED_INFO pFixedInfo,PULONG pOutBufLen); DWORD WINAPI GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo,PULONG pOutBufLen); PIP_ADAPTER_ORDER_MAP WINAPI GetAdapterOrderMap(VOID); #ifdef _WINSOCK2API_ DWORD WINAPI GetAdaptersAddresses(ULONG Family,DWORD Flags,PVOID Reserved,PIP_ADAPTER_ADDRESSES pAdapterAddresses,PULONG pOutBufLen); #endif DWORD WINAPI GetPerAdapterInfo(ULONG IfIndex,PIP_PER_ADAPTER_INFO pPerAdapterInfo,PULONG pOutBufLen); DWORD WINAPI IpReleaseAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo); DWORD WINAPI IpRenewAddress(PIP_ADAPTER_INDEX_MAP AdapterInfo); DWORD WINAPI SendARP(IPAddr DestIP,IPAddr SrcIP,PULONG pMacAddr,PULONG PhyAddrLen); WINBOOL WINAPI GetRTTAndHopCount(IPAddr DestIpAddress,PULONG HopCount,ULONG MaxHops,PULONG RTT); DWORD WINAPI GetFriendlyIfIndex(DWORD IfIndex); DWORD WINAPI EnableRouter(HANDLE *pHandle,OVERLAPPED *pOverlapped); DWORD WINAPI UnenableRouter(OVERLAPPED *pOverlapped,LPDWORD lpdwEnableCount); DWORD WINAPI DisableMediaSense(HANDLE *pHandle,OVERLAPPED *pOverLapped); DWORD WINAPI RestoreMediaSense(OVERLAPPED *pOverlapped,LPDWORD lpdwEnableCount); DWORD WINAPI GetIpErrorString(IP_STATUS ErrorCode,PWCHAR Buffer,PDWORD Size); DWORD WINAPI GetExtendedUdpTable( PVOID pUdpTable, PDWORD pdwSize, WINBOOL bOrder, ULONG ulAf, UDP_TABLE_CLASS TableClass, ULONG Reserved ); DWORD WINAPI GetOwnerModuleFromTcp6Entry( PMIB_TCP6ROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID Buffer, PDWORD pdwSize ); DWORD WINAPI GetOwnerModuleFromTcpEntry( PMIB_TCPROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID Buffer, PDWORD pdwSize ); DWORD WINAPI GetOwnerModuleFromUdp6Entry( PMIB_UDP6ROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID Buffer, PDWORD pdwSize ); DWORD WINAPI GetOwnerModuleFromUdpEntry( PMIB_UDPROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID Buffer, PDWORD pdwSize ); #if (_WIN32_WINNT == 0x0502) /* Only with Win2003 SP1 and SP2 */ WINBOOL WINAPI CancelSecurityHealthChangeNotify(LPOVERLAPPED notifyOverlapped); #endif /*(_WIN32_WINNT == 0x0502)*/ #if (_WIN32_WINNT >= 0x0600) #include <windns.h> typedef enum _NET_ADDRESS_FORMAT { NET_ADDRESS_FORMAT_UNSPECIFIED = 0, NET_ADDRESS_DNS_NAME, NET_ADDRESS_IPV4, NET_ADDRESS_IPV6 } NET_ADDRESS_FORMAT; typedef struct _NET_ADDRESS_INFO { NET_ADDRESS_FORMAT Format; __C89_NAMELESS union { struct { WCHAR Address[DNS_MAX_NAME_BUFFER_LENGTH]; WCHAR Port[6]; } NamedAddress; SOCKADDR_IN Ipv4Address; SOCKADDR_IN6 Ipv6Address; SOCKADDR IpAddress; }; } NET_ADDRESS_INFO, *PNET_ADDRESS_INFO; ULONG WINAPI GetPerTcp6ConnectionEStats( PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize ); ULONG WINAPI SetPerTcp6ConnectionEStats( PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset ); ULONG WINAPI SetPerTcpConnectionEStats( PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset ); ULONG WINAPI GetTcp6Table( PMIB_TCP6TABLE TcpTable, PULONG SizePointer, WINBOOL Order ); ULONG WINAPI GetPerTcpConnectionEStats( PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize ); ULONG WINAPI GetTcp6Table2( PMIB_TCP6TABLE2 TcpTable, PULONG SizePointer, WINBOOL Order ); ULONG WINAPI GetTcpTable2( PMIB_TCPTABLE2 TcpTable, PULONG SizePointer, WINBOOL Order ); ULONG WINAPI GetUdp6Table( PMIB_UDP6TABLE Udp6Table, PULONG SizePointer, WINBOOL Order ); DWORD WINAPI NotifySecurityHealthChange( PHANDLE pHandle, LPOVERLAPPED pOverLapped, PULONG SecurityHealthFlags ); ULONG WINAPI ResolveNeighbor( SOCKADDR *NetworkAddress, PVOID PhysicalAddress, PULONG PhysicalAddressLength ); DWORD WINAPI SetIpStatisticsEx( PMIB_IPSTATS pIpStats, ULONG Family ); #endif /*(_WIN32_WINNT >= 0x0600)*/ #ifdef __cplusplus } #endif #endif