4 #define NtCurrentTeb NtXCurrentTeb
9 #ifdef HAVE_NETINET_IN_H
10 # include <netinet/in.h>
12 #ifdef HAVE_ARPA_INET_H
13 # include <arpa/inet.h>
15 #ifdef HAVE_ARPA_NAMESER_H
16 # include <arpa/nameser.h>
23 #define _WIN32_WINNT 0x500
24 #define WIN32_NO_STATUS
26 #define NTOS_MODE_USER
27 #include <ndk/ntndk.h>
33 #include "wine/debug.h"
35 #include "ddk/tdiinfo.h"
43 #define INADDR_NONE (~0U)
46 #ifndef IFENT_SOFTWARE_LOOPBACK
47 #define IFENT_SOFTWARE_LOOPBACK 24 /* This is an SNMP constant from rfc1213 */
48 #endif/*IFENT_SOFTWARE_LOOPBACK*/
50 #define INDEX_IS_LOOPBACK 0x00800000
52 /* Type declarations */
58 #define TCP_REQUEST_QUERY_INFORMATION_INIT { { { 0 } } }
59 #define TCP_REQUEST_SET_INFORMATION_INIT { { 0 } }
61 #define IP_MIB_ROUTETABLE_ENTRY_ID 0x101
63 // As in the mib from RFC 1213
65 typedef struct _IPRouteEntry
{
67 ULONG ire_index
; //matches if_index in IFEntry and iae_index in IPAddrEntry
81 /* No caddr_t in reactos headers */
82 typedef char *caddr_t
;
84 typedef union _IFEntrySafelySized
{
85 CHAR MaxSize
[sizeof(DWORD
) +
87 MAX_ADAPTER_DESCRIPTION_LENGTH
+ 1];
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
;
98 /* Encapsulates information about an interface */
99 typedef struct _IFInfo
{
100 TDIEntityID entity_id
;
101 IFEntrySafelySized if_info
;
105 typedef struct _IP_SET_DATA
{
109 } IP_SET_DATA
, *PIP_SET_DATA
;
111 typedef enum _IPHLPAddrType
{
112 IPAAddr
, IPABcast
, IPAMask
, IFMtu
, IFStatus
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
,
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
);
129 int GetLongestChildKeyName( HANDLE RegHandle
);
130 LONG
OpenChildKeyRead( HANDLE RegHandle
,
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
);
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)
142 GetComputerNameExA(COMPUTER_NAME_FORMAT
,LPSTR
,LPDWORD
);
147 #define DPRINT(fmt,x...) DbgPrint("%s:%d:%s: " fmt, __FILE__, __LINE__, __FUNCTION__, ## x)
150 #endif/*IPPRIVATE_H*/