home *** CD-ROM | disk | FTP | other *** search
/ Steganos Hacker Tools / SHT151.iso / programme / scanner / nmapNTsp1 / Win_2000.exe / nmapNT-src / nmapNT / IPHlpApi.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-28  |  14.7 KB  |  493 lines

  1. /*++
  2.  
  3. Copyright (c) 1997-1999  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     public\sdk\inc\iphlpapi.h
  8.  
  9. Abstract:
  10.     Header file for functions to interact with the IP Stack for MIB-II and
  11.     related functionality
  12.  
  13. Revision History:
  14.     Amritansh Raghav    Created
  15.     NK Srinivas         Added
  16.  
  17. --*/
  18.  
  19. #ifndef __IPHLPAPI_H__
  20. #define __IPHLPAPI_H__
  21.  
  22. #if _MSC_VER > 1000
  23. #pragma once
  24. #endif
  25.  
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29.  
  30. //////////////////////////////////////////////////////////////////////////////
  31. //                                                                          //
  32. // IPRTRMIB.H has the definitions of the strcutures used to set and get     //
  33. // information                                                              //
  34. //                                                                          //
  35. //////////////////////////////////////////////////////////////////////////////
  36.  
  37. #include <iprtrmib.h>
  38. #include <ipexport.h>
  39. #include <iptypes.h>
  40.  
  41. //////////////////////////////////////////////////////////////////////////////
  42. //                                                                          //
  43. // The GetXXXTable APIs take a buffer and a size of buffer.  If the buffer  //
  44. // is not large enough, they APIs return ERROR_INSUFFICIENT_BUFFER  and     //
  45. // *pdwSize is the required buffer size                                     //
  46. // The bOrder is a BOOLEAN, which if TRUE sorts the table according to      //
  47. // MIB-II (RFC XXXX)                                                        //
  48. //                                                                          //
  49. //////////////////////////////////////////////////////////////////////////////
  50.  
  51.  
  52. //////////////////////////////////////////////////////////////////////////////
  53. //                                                                          //
  54. // Retrieves the number of interfaces in the system. These include LAN and  //
  55. // WAN interfaces                                                           //
  56. //                                                                          //
  57. //////////////////////////////////////////////////////////////////////////////
  58.  
  59.  
  60. DWORD
  61. WINAPI
  62. GetNumberOfInterfaces(
  63.     OUT PDWORD  pdwNumIf
  64.     );
  65.  
  66. //////////////////////////////////////////////////////////////////////////////
  67. //                                                                          //
  68. // Gets the MIB-II ifEntry                                                  //
  69. // The dwIndex field of the MIB_IFROW should be set to the index of the     //
  70. // interface being queried                                                  //
  71. //                                                                          //
  72. //////////////////////////////////////////////////////////////////////////////
  73.  
  74. DWORD
  75. WINAPI
  76. GetIfEntry(
  77.     IN OUT PMIB_IFROW   pIfRow
  78.     );
  79.  
  80. //////////////////////////////////////////////////////////////////////////////
  81. //                                                                          //
  82. // Gets the MIB-II IfTable                                                  //
  83. //                                                                          //
  84. //////////////////////////////////////////////////////////////////////////////
  85.  
  86. DWORD
  87. WINAPI
  88. GetIfTable(
  89.     OUT    PMIB_IFTABLE pIfTable,
  90.     IN OUT PULONG       pdwSize,
  91.     IN     BOOL         bOrder
  92.     );
  93.  
  94. //////////////////////////////////////////////////////////////////////////////
  95. //                                                                          //
  96. // Gets the Interface to IP Address mapping                                 //
  97. //                                                                          //
  98. //////////////////////////////////////////////////////////////////////////////
  99.  
  100. DWORD
  101. WINAPI
  102. GetIpAddrTable(
  103.     OUT    PMIB_IPADDRTABLE pIpAddrTable,
  104.     IN OUT PULONG           pdwSize,
  105.     IN     BOOL             bOrder
  106.     );
  107.  
  108. //////////////////////////////////////////////////////////////////////////////
  109. //                                                                          //
  110. // Gets the current IP Address to Physical Address (ARP) mapping            //
  111. //                                                                          //
  112. //////////////////////////////////////////////////////////////////////////////
  113.  
  114. DWORD
  115. WINAPI
  116. GetIpNetTable(
  117.     OUT    PMIB_IPNETTABLE pIpNetTable,
  118.     IN OUT PULONG          pdwSize,
  119.     IN     BOOL            bOrder
  120.     );
  121.  
  122. //////////////////////////////////////////////////////////////////////////////
  123. //                                                                          //
  124. // Gets the IP Routing Table  (RFX XXXX)                                    //
  125. //                                                                          //
  126. //////////////////////////////////////////////////////////////////////////////
  127.  
  128. DWORD
  129. WINAPI
  130. GetIpForwardTable(
  131.     OUT    PMIB_IPFORWARDTABLE pIpForwardTable,
  132.     IN OUT PULONG              pdwSize,
  133.     IN     BOOL                bOrder
  134.     );
  135.  
  136. //////////////////////////////////////////////////////////////////////////////
  137. //                                                                          //
  138. // Gets TCP Connection/UDP Listener Table                                   //
  139. //                                                                          //
  140. //////////////////////////////////////////////////////////////////////////////
  141.  
  142. DWORD
  143. WINAPI
  144. GetTcpTable(
  145.     OUT    PMIB_TCPTABLE pTcpTable,
  146.     IN OUT PDWORD        pdwSize,
  147.     IN     BOOL          bOrder
  148.     );
  149.  
  150. DWORD
  151. WINAPI
  152. GetUdpTable(
  153.     OUT    PMIB_UDPTABLE pUdpTable,
  154.     IN OUT PDWORD        pdwSize,
  155.     IN     BOOL          bOrder
  156.     );
  157.  
  158.  
  159. //////////////////////////////////////////////////////////////////////////////
  160. //                                                                          //
  161. // Gets IP/ICMP/TCP/UDP Statistics                                          //
  162. //                                                                          //
  163. //////////////////////////////////////////////////////////////////////////////
  164.  
  165. DWORD
  166. WINAPI
  167. GetIpStatistics(
  168.     OUT  PMIB_IPSTATS   pStats
  169.     );
  170.  
  171. DWORD
  172. WINAPI
  173. GetIcmpStatistics(
  174.     OUT PMIB_ICMP   pStats
  175.     );
  176.  
  177.  
  178. DWORD
  179. WINAPI
  180. GetTcpStatistics(
  181.     OUT PMIB_TCPSTATS   pStats
  182.     );
  183.  
  184. DWORD
  185. WINAPI
  186. GetUdpStatistics(
  187.     OUT PMIB_UDPSTATS   pStats
  188.     );
  189.  
  190. //////////////////////////////////////////////////////////////////////////////
  191. //                                                                          //
  192. // Used to set the ifAdminStatus on an interface.  The only fields of the   //
  193. // MIB_IFROW that are relevant are the dwIndex (index of the interface      //
  194. // whose status needs to be set) and the dwAdminStatus which can be either  //
  195. // MIB_IF_ADMIN_STATUS_UP or MIB_IF_ADMIN_STATUS_DOWN                       //
  196. //                                                                          //
  197. //////////////////////////////////////////////////////////////////////////////
  198.  
  199. DWORD
  200. WINAPI
  201. SetIfEntry(
  202.     IN PMIB_IFROW pIfRow
  203.     );
  204.  
  205. //////////////////////////////////////////////////////////////////////////////
  206. //                                                                          //
  207. // Used to create, modify or delete a route.  In all cases the              //
  208. // dwForwardIfIndex, dwForwardDest, dwForwardMask, dwForwardNextHop and     //
  209. // dwForwardPolicy MUST BE SPECIFIED. Currently dwForwardPolicy is unused   //
  210. // and MUST BE 0.                                                           //
  211. // For a set, the complete MIB_IPFORWARDROW structure must be specified     //
  212. //                                                                          //
  213. //////////////////////////////////////////////////////////////////////////////
  214.  
  215. DWORD
  216. WINAPI
  217. CreateIpForwardEntry(
  218.     IN PMIB_IPFORWARDROW pRoute
  219.     );
  220.  
  221. DWORD
  222. WINAPI
  223. SetIpForwardEntry(
  224.     IN PMIB_IPFORWARDROW pRoute
  225.     );
  226.  
  227. DWORD
  228. WINAPI
  229. DeleteIpForwardEntry(
  230.     IN PMIB_IPFORWARDROW pRoute
  231.     );
  232.  
  233. //////////////////////////////////////////////////////////////////////////////
  234. //                                                                          //
  235. // Used to set the ipForwarding to ON or OFF (currently only ON->OFF is     //
  236. // allowed) and to set the defaultTTL.  If only one of the fields needs to  //
  237. // be modified and the other needs to be the same as before the other field //
  238. // needs to be set to MIB_USE_CURRENT_TTL or MIB_USE_CURRENT_FORWARDING as  //
  239. // the case may be                                                          //
  240. //                                                                          //
  241. //////////////////////////////////////////////////////////////////////////////
  242.  
  243.  
  244. DWORD
  245. WINAPI
  246. SetIpStatistics(
  247.     IN PMIB_IPSTATS pIpStats
  248.     );
  249.  
  250. //////////////////////////////////////////////////////////////////////////////
  251. //                                                                          //
  252. // Used to set the defaultTTL.                                              //
  253. //                                                                          //
  254. //////////////////////////////////////////////////////////////////////////////
  255.  
  256. DWORD
  257. WINAPI
  258. SetIpTTL(
  259.     UINT nTTL
  260.     );
  261.  
  262. //////////////////////////////////////////////////////////////////////////////
  263. //                                                                          //
  264. // Used to create, modify or delete an ARP entry.  In all cases the dwIndex //
  265. // dwAddr field MUST BE SPECIFIED.                                          //
  266. // For a set, the complete MIB_IPNETROW structure must be specified         //
  267. //                                                                          //
  268. //////////////////////////////////////////////////////////////////////////////
  269.  
  270. DWORD
  271. WINAPI
  272. CreateIpNetEntry(
  273.     IN PMIB_IPNETROW    pArpEntry
  274.     );
  275.  
  276. DWORD
  277. WINAPI
  278. SetIpNetEntry(
  279.     IN PMIB_IPNETROW    pArpEntry
  280.     );
  281.  
  282. DWORD
  283. WINAPI
  284. DeleteIpNetEntry(
  285.     IN PMIB_IPNETROW    pArpEntry
  286.     );
  287.  
  288. DWORD
  289. WINAPI
  290. FlushIpNetTable(
  291.     IN DWORD   dwIfIndex
  292.     );
  293.  
  294.  
  295. //////////////////////////////////////////////////////////////////////////////
  296. //                                                                          //
  297. // Used to create or delete a Proxy ARP entry. The dwIndex is the index of  //
  298. // the interface on which to PARP for the dwAddress.  If the interface is   //
  299. // of a type that doesnt support ARP, e.g. PPP, then the call will fail     //
  300. //                                                                          //
  301. //////////////////////////////////////////////////////////////////////////////
  302.  
  303. DWORD
  304. WINAPI
  305. CreateProxyArpEntry(
  306.     IN  DWORD   dwAddress,
  307.     IN  DWORD   dwMask,
  308.     IN  DWORD   dwIfIndex
  309.     );
  310.  
  311. DWORD
  312. WINAPI
  313. DeleteProxyArpEntry(
  314.     IN  DWORD   dwAddress,
  315.     IN  DWORD   dwMask,
  316.     IN  DWORD   dwIfIndex
  317.     );
  318.  
  319. //////////////////////////////////////////////////////////////////////////////
  320. //                                                                          //
  321. // Used to set the state of a TCP Connection. The only state that it can be //
  322. // set to is MIB_TCP_STATE_DELETE_TCB.  The complete MIB_TCPROW structure   //
  323. // MUST BE SPECIFIED                                                        //
  324. //                                                                          //
  325. //////////////////////////////////////////////////////////////////////////////
  326.  
  327. DWORD
  328. WINAPI
  329. SetTcpEntry(
  330.     IN PMIB_TCPROW pTcpRow
  331.     );
  332.  
  333.  
  334. DWORD
  335. WINAPI
  336. GetInterfaceInfo(
  337.     IN PIP_INTERFACE_INFO pIfTable,
  338.     OUT PULONG            dwOutBufLen
  339.     );
  340.  
  341. DWORD
  342. WINAPI
  343. GetUniDirectionalAdapterInfo(OUT PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo,
  344.                  OUT PULONG dwOutBufLen
  345.                  );
  346.  
  347. //////////////////////////////////////////////////////////////////////////////
  348. //                                                                          //
  349. // Gets the "best" outgoing interface for the specified destination address //
  350. //                                                                          //
  351. //////////////////////////////////////////////////////////////////////////////
  352.  
  353. DWORD
  354. WINAPI
  355. GetBestInterface(
  356.     IN  IPAddr  dwDestAddr,
  357.     OUT PDWORD  pdwBestIfIndex
  358.     );
  359.  
  360. //////////////////////////////////////////////////////////////////////////////
  361. //                                                                          //
  362. // Gets the best (longest matching prefix) route for the given destination  //
  363. // If the source address is also specified (i.e. is not 0x00000000), and    //
  364. // there are multiple "best" routes to the given destination, the returned  //
  365. // route will be one that goes out over the interface which has an address  //
  366. // that matches the source address                                          //
  367. //                                                                          //
  368. //////////////////////////////////////////////////////////////////////////////
  369.  
  370. DWORD
  371. WINAPI
  372. GetBestRoute(
  373.     IN  DWORD               dwDestAddr,
  374.     IN  DWORD               dwSourceAddr, OPTIONAL
  375.     OUT PMIB_IPFORWARDROW   pBestRoute
  376.     );
  377.  
  378. DWORD
  379. WINAPI
  380. NotifyAddrChange(
  381.     OUT PHANDLE      Handle,
  382.     IN  LPOVERLAPPED overlapped
  383.     );
  384.  
  385.  
  386. DWORD
  387. WINAPI
  388. NotifyRouteChange(
  389.     OUT PHANDLE      Handle,
  390.     IN  LPOVERLAPPED overlapped
  391.     );
  392.  
  393.  
  394. DWORD
  395. WINAPI
  396. GetAdapterIndex(
  397.     IN LPWSTR  AdapterName,
  398.     OUT PULONG IfIndex
  399.     );
  400.  
  401. DWORD
  402. WINAPI
  403. AddIPAddress(
  404.     IPAddr  Address,
  405.     IPMask  IpMask,
  406.     DWORD   IfIndex,
  407.     PULONG  NTEContext,
  408.     PULONG  NTEInstance
  409.     );
  410.  
  411. DWORD
  412. WINAPI
  413. DeleteIPAddress(
  414.     ULONG NTEContext
  415.     );
  416.  
  417. DWORD
  418. WINAPI
  419. GetNetworkParams(
  420.     PFIXED_INFO pFixedInfo, PULONG pOutBufLen
  421.     );
  422.  
  423. DWORD
  424. WINAPI
  425. GetAdaptersInfo(
  426.     PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen
  427.     );
  428.  
  429. DWORD
  430. WINAPI
  431. GetPerAdapterInfo(
  432.     ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen
  433.     );
  434.  
  435. DWORD
  436. WINAPI
  437. IpReleaseAddress(
  438.     PIP_ADAPTER_INDEX_MAP  AdapterInfo
  439.     );
  440.  
  441.  
  442. DWORD
  443. WINAPI
  444. IpRenewAddress(
  445.     PIP_ADAPTER_INDEX_MAP  AdapterInfo
  446.     );
  447.  
  448. DWORD
  449. WINAPI
  450. SendARP(
  451.     IPAddr DestIP,
  452.     IPAddr SrcIP,
  453.     PULONG pMacAddr,
  454.     PULONG  PhyAddrLen
  455.     );
  456.  
  457. BOOL
  458. WINAPI
  459. GetRTTAndHopCount(
  460.     IPAddr DestIpAddress,
  461.     PULONG HopCount,
  462.     ULONG  MaxHops,
  463.     PULONG RTT
  464.     );
  465.  
  466. DWORD
  467. WINAPI
  468. GetFriendlyIfIndex(
  469.     DWORD IfIndex
  470.     );
  471.  
  472. DWORD
  473. WINAPI
  474. EnableRouter(
  475.     HANDLE* pHandle,
  476.     OVERLAPPED* pOverlapped
  477.     );
  478.  
  479. DWORD
  480. WINAPI
  481. UnenableRouter(
  482.     OVERLAPPED* pOverlapped,
  483.     LPDWORD lpdwEnableCount OPTIONAL
  484.     );
  485.  
  486. #ifdef __cplusplus
  487. }
  488. #endif
  489.  
  490. #endif //__IPHLPAPI_H__
  491.  
  492.  
  493.