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
28 #define NTOS_MODE_USER
29 #include <ndk/ntndk.h>
34 #include "wine/debug.h"
36 //#include "ntddndis.h"
37 #include "ddk/tdiinfo.h"
45 #define INADDR_NONE (~0U)
48 #ifndef IFENT_SOFTWARE_LOOPBACK
49 #define IFENT_SOFTWARE_LOOPBACK 24 /* This is an SNMP constant from rfc1213 */
50 #endif/*IFENT_SOFTWARE_LOOPBACK*/
52 #define INDEX_IS_LOOPBACK 0x00800000
54 /* Type declarations */
60 #define TCP_REQUEST_QUERY_INFORMATION_INIT { { { 0 } } }
61 #define TCP_REQUEST_SET_INFORMATION_INIT { { 0 } }
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_ROUTE_ENTRY
{
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_ROUTE_ENTRY
,
96 *PTCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
;
98 typedef union _TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
{
99 CHAR MaxSize
[sizeof(TCP_REQUEST_SET_INFORMATION_EX
) - 1 +
100 sizeof(MIB_IPNETROW
)];
101 TCP_REQUEST_SET_INFORMATION_EX Req
;
102 } TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
,
103 *PTCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
;
105 /* Encapsulates information about an interface */
106 typedef struct _IFInfo
{
107 TDIEntityID entity_id
;
108 IFEntrySafelySized if_info
;
112 typedef struct _IP_SET_DATA
{
116 } IP_SET_DATA
, *PIP_SET_DATA
;
118 typedef enum _IPHLPAddrType
{
119 IPAAddr
, IPABcast
, IPAMask
, IFMtu
, IFStatus
123 NTSTATUS
openTcpFile(PHANDLE tcpFile
);
124 VOID
closeTcpFile(HANDLE tcpFile
);
125 NTSTATUS
tdiGetEntityIDSet( HANDLE tcpFile
, TDIEntityID
**entitySet
,
126 PDWORD numEntities
);
127 NTSTATUS
tdiGetSetOfThings( HANDLE tcpFile
, DWORD toiClass
, DWORD toiType
,
128 DWORD toiId
, DWORD teiEntity
, DWORD teiInstance
,
130 DWORD entrySize
, PVOID
*tdiEntitySet
,
132 VOID
tdiFreeThingSet( PVOID things
);
133 NTSTATUS
getNthIpEntity( HANDLE tcpFile
, DWORD index
, TDIEntityID
*ent
);
134 NTSTATUS
tdiGetIpAddrsForIpEntity( HANDLE tcpFile
, TDIEntityID
*ent
,
135 IPAddrEntry
**addrs
, PDWORD numAddrs
);
137 int GetLongestChildKeyName( HANDLE RegHandle
);
138 LONG
OpenChildKeyRead( HANDLE RegHandle
,
140 PHKEY ReturnHandle
);
141 PWCHAR
GetNthChildKeyName( HANDLE RegHandle
, DWORD n
);
142 void ConsumeChildKeyName( PWCHAR Name
);
143 PWCHAR
QueryRegistryValueString( HANDLE RegHandle
, PWCHAR ValueName
);
144 void ConsumeRegValueString( PWCHAR NameServer
);
145 BOOL
isInterface( TDIEntityID
*if_maybe
);
146 BOOL
hasArp( HANDLE tcpFile
, TDIEntityID
*arp_maybe
);
148 typedef VOID (*EnumNameServersFunc
)( PWCHAR Interface
,
151 void EnumNameServers( HANDLE RegHandle
, PWCHAR Interface
, PVOID Data
, EnumNameServersFunc cb
);
154 /* This is here until we switch to version 2.5 of the mingw headers */
155 #if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
157 GetComputerNameExA(COMPUTER_NAME_FORMAT
,LPSTR
,LPDWORD
);
162 #define DPRINT(fmt,x...) DbgPrint("%s:%d:%s: " fmt, __FILE__, __LINE__, __FUNCTION__, ## x)
165 #endif/*IPPRIVATE_H*/