reshuffling of dlls
[reactos.git] / reactos / dll / win32 / 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 #define WIN32_NO_STATUS
25 #include <windows.h>
26 #define NTOS_MODE_USER
27 #include <ndk/ntndk.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 #define IP_MIB_ROUTETABLE_ENTRY_ID 0x101
62
63 // As in the mib from RFC 1213
64
65 typedef struct _IPRouteEntry {
66 ULONG ire_dest;
67 ULONG ire_index; //matches if_index in IFEntry and iae_index in IPAddrEntry
68 ULONG ire_metric1;
69 ULONG ire_metric2;
70 ULONG ire_metric3;
71 ULONG ire_metric4;
72 ULONG ire_gw;
73 ULONG ire_type;
74 ULONG ire_proto;
75 ULONG ire_age;
76 ULONG ire_mask;
77 ULONG ire_metric5;
78 ULONG ire_info;
79 } IPRouteEntry;
80
81 /* No caddr_t in reactos headers */
82 typedef char *caddr_t;
83
84 typedef union _IFEntrySafelySized {
85 CHAR MaxSize[sizeof(DWORD) +
86 sizeof(IFEntry) +
87 MAX_ADAPTER_DESCRIPTION_LENGTH + 1];
88 IFEntry ent;
89 } IFEntrySafelySized;
90
91 typedef union _TCP_REQUEST_SET_INFORMATION_EX_SAFELY_SIZED {
92 CHAR MaxSize[sizeof(TCP_REQUEST_SET_INFORMATION_EX) - 1 +
93 sizeof(IPRouteEntry)];
94 TCP_REQUEST_SET_INFORMATION_EX Req;
95 } TCP_REQUEST_SET_INFORMATION_EX_SAFELY_SIZED,
96 *PTCP_REQUEST_SET_INFORMATION_EX_SAFELY_SIZED;
97
98 /* Encapsulates information about an interface */
99 typedef struct _IFInfo {
100 TDIEntityID entity_id;
101 IFEntrySafelySized if_info;
102 IPAddrEntry ip_addr;
103 } IFInfo;
104
105 typedef struct _IP_SET_DATA {
106 ULONG NteContext;
107 ULONG NewAddress;
108 ULONG NewNetmask;
109 } IP_SET_DATA, *PIP_SET_DATA;
110
111 typedef enum _IPHLPAddrType {
112 IPAAddr, IPABcast, IPAMask, IFMtu, IFStatus
113 } IPHLPAddrType;
114
115 /** Prototypes **/
116 NTSTATUS openTcpFile(PHANDLE tcpFile);
117 VOID closeTcpFile(HANDLE tcpFile);
118 NTSTATUS tdiGetEntityIDSet( HANDLE tcpFile, TDIEntityID **entitySet,
119 PDWORD numEntities );
120 NTSTATUS tdiGetSetOfThings( HANDLE tcpFile, DWORD toiClass, DWORD toiType,
121 DWORD toiId, DWORD teiEntity, DWORD fixedPart,
122 DWORD entrySize, PVOID *tdiEntitySet,
123 PDWORD numEntries );
124 VOID tdiFreeThingSet( PVOID things );
125 NTSTATUS getNthIpEntity( HANDLE tcpFile, DWORD index, TDIEntityID *ent );
126 NTSTATUS tdiGetIpAddrsForIpEntity( HANDLE tcpFile, TDIEntityID *ent,
127 IPAddrEntry **addrs, PDWORD numAddrs );
128
129 int GetLongestChildKeyName( HANDLE RegHandle );
130 LONG OpenChildKeyRead( HANDLE RegHandle,
131 PWCHAR ChildKeyName,
132 PHKEY ReturnHandle );
133 PWCHAR GetNthChildKeyName( HANDLE RegHandle, DWORD n );
134 void ConsumeChildKeyName( PWCHAR Name );
135 PWCHAR QueryRegistryValueString( HANDLE RegHandle, PWCHAR ValueName );
136 void ConsumeRegValueString( PWCHAR NameServer );
137
138 #include <w32api.h>
139 /* This is here until we switch to version 2.5 of the mingw headers */
140 #if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
141 BOOL WINAPI
142 GetComputerNameExA(COMPUTER_NAME_FORMAT,LPSTR,LPDWORD);
143 #endif
144
145 #ifdef FORCE_DEBUG
146 #undef DPRINT
147 #define DPRINT(fmt,x...) DbgPrint("%s:%d:%s: " fmt, __FILE__, __LINE__, __FUNCTION__, ## x)
148 #endif
149
150 #endif/*IPPRIVATE_H*/