729a19815a2786670f0b2f14cbe93bc50809342f
[reactos.git] / reactos / lib / iphlpapi / iphlpapi_private.h
1 #ifndef IPPRIVATE_H
2 #define IPPRIVATE_H
3
4 #define NtCurrentTeb NtXCurrentTeb
5
6 #include <stdarg.h>
7 #include <stdlib.h>
8 #include <sys/types.h>
9 #ifdef HAVE_NETINET_IN_H
10 # include <netinet/in.h>
11 #endif
12 #ifdef HAVE_ARPA_INET_H
13 # include <arpa/inet.h>
14 #endif
15 #ifdef HAVE_ARPA_NAMESER_H
16 # include <arpa/nameser.h>
17 #endif
18 #ifdef HAVE_RESOLV_H
19 # include <resolv.h>
20 #endif
21
22 #undef _WIN32_WINNT
23 #define _WIN32_WINNT 0x500
24 #include <ddk/ntddk.h>
25 #include <rosrtl/string.h>
26 #include <ddk/miniport.h>
27 #include <tcpmisc.h>
28 #include <winsock2.h>
29 #include <nspapi.h>
30 #include <iptypes.h>
31 #include "iphlpapi.h"
32 #include "resinfo.h"
33 #include "wine/debug.h"
34
35 #include "ddk/tdiinfo.h"
36 #include "tcpioctl.h"
37
38 #ifndef ETH_ALEN
39 #define ETH_ALEN 6
40 #endif
41
42 #ifndef INADDR_NONE
43 #define INADDR_NONE (~0U)
44 #endif
45
46 #ifndef IFENT_SOFTWARE_LOOPBACK
47 #define IFENT_SOFTWARE_LOOPBACK 24 /* This is an SNMP constant from rfc1213 */
48 #endif/*IFENT_SOFTWARE_LOOPBACK*/
49
50 #define INDEX_IS_LOOPBACK 0x00800000
51
52 /* Type declarations */
53
54 #ifndef IFNAMSIZ
55 #define IFNAMSIZ 0x20
56 #endif/*IFNAMSIZ*/
57
58 #define TCP_REQUEST_QUERY_INFORMATION_INIT { { { 0 } } }
59 #define TCP_REQUEST_SET_INFORMATION_INIT { { 0 } }
60
61 /* No caddr_t in reactos headers */
62 typedef char *caddr_t;
63
64 typedef union _IFEntrySafelySized {
65 CHAR MaxSize[sizeof(DWORD) +
66 sizeof(IFEntry) +
67 MAX_ADAPTER_DESCRIPTION_LENGTH + 1];
68 IFEntry ent;
69 } IFEntrySafelySized;
70
71 typedef union _TCP_REQUEST_SET_INFORMATION_EX_SAFELY_SIZED {
72 CHAR MaxSize[sizeof(TCP_REQUEST_SET_INFORMATION_EX) - 1 +
73 sizeof(IPRouteEntry)];
74 TCP_REQUEST_SET_INFORMATION_EX Req;
75 } TCP_REQUEST_SET_INFORMATION_EX_SAFELY_SIZED,
76 *PTCP_REQUEST_SET_INFORMATION_EX_SAFELY_SIZED;
77
78 /* Encapsulates information about an interface */
79 typedef struct _IFInfo {
80 TDIEntityID entity_id;
81 IFEntrySafelySized if_info;
82 IPAddrEntry ip_addr;
83 } IFInfo;
84
85 typedef enum _IPHLPAddrType {
86 IPAAddr, IPABcast, IPAMask, IFMtu, IFStatus
87 } IPHLPAddrType;
88
89 /** Prototypes **/
90 NTSTATUS openTcpFile(PHANDLE tcpFile);
91 VOID closeTcpFile(HANDLE tcpFile);
92 NTSTATUS tdiGetEntityIDSet( HANDLE tcpFile, TDIEntityID **entitySet,
93 PDWORD numEntities );
94 NTSTATUS tdiGetSetOfThings( HANDLE tcpFile, DWORD toiClass, DWORD toiType,
95 DWORD toiId, DWORD teiEntity, DWORD fixedPart,
96 DWORD entrySize, PVOID *tdiEntitySet,
97 PDWORD numEntries );
98 VOID tdiFreeThingSet( PVOID things );
99 NTSTATUS getNthIpEntity( HANDLE tcpFile, DWORD index, TDIEntityID *ent );
100 NTSTATUS tdiGetIpAddrsForIpEntity( HANDLE tcpFile, TDIEntityID *ent,
101 IPAddrEntry **addrs, PDWORD numAddrs );
102
103 int GetLongestChildKeyName( HANDLE RegHandle );
104 LONG OpenChildKeyRead( HANDLE RegHandle,
105 PCHAR ChildKeyName,
106 PHKEY ReturnHandle );
107 PCHAR GetNthChildKeyName( HANDLE RegHandle, DWORD n );
108 void ConsumeChildKeyName( PCHAR Name );
109 PCHAR QueryRegistryValueString( HANDLE RegHandle, PCHAR ValueName );
110 void ConsumeRegValueString( PCHAR NameServer );
111
112 #include <w32api.h>
113 /* This is here until we switch to version 2.5 of the mingw headers */
114 #if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
115 BOOL WINAPI
116 GetComputerNameExA(COMPUTER_NAME_FORMAT,LPSTR,LPDWORD);
117 #endif
118
119 #ifdef FORCE_DEBUG
120 #undef DPRINT
121 #define DPRINT(fmt,x...) DbgPrint("%s:%d:%s: " fmt, __FILE__, __LINE__, __FUNCTION__, ## x)
122 #endif
123
124 #endif/*IPPRIVATE_H*/