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"
47 #define INADDR_NONE (~0U)
50 #ifndef IFENT_SOFTWARE_LOOPBACK
51 #define IFENT_SOFTWARE_LOOPBACK 24 /* This is an SNMP constant from rfc1213 */
52 #endif/*IFENT_SOFTWARE_LOOPBACK*/
54 #define INDEX_IS_LOOPBACK 0x00800000
56 /* Type declarations */
62 #define TCP_REQUEST_QUERY_INFORMATION_INIT { { { 0 } } }
63 #define TCP_REQUEST_SET_INFORMATION_INIT { { 0 } }
65 // As in the mib from RFC 1213
67 typedef struct _IPRouteEntry
{
69 ULONG ire_index
; //matches if_index in IFEntry and iae_index in IPAddrEntry
83 /* No caddr_t in reactos headers */
84 typedef char *caddr_t
;
86 typedef union _IFEntrySafelySized
{
87 CHAR MaxSize
[sizeof(DWORD
) +
89 MAX_ADAPTER_DESCRIPTION_LENGTH
+ 1];
93 typedef union _TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
{
94 CHAR MaxSize
[sizeof(TCP_REQUEST_SET_INFORMATION_EX
) - 1 +
95 sizeof(IPRouteEntry
)];
96 TCP_REQUEST_SET_INFORMATION_EX Req
;
97 } TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
,
98 *PTCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
;
100 typedef union _TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
{
101 CHAR MaxSize
[sizeof(TCP_REQUEST_SET_INFORMATION_EX
) - 1 +
102 sizeof(MIB_IPNETROW
)];
103 TCP_REQUEST_SET_INFORMATION_EX Req
;
104 } TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
,
105 *PTCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
;
107 /* Encapsulates information about an interface */
108 typedef struct _IFInfo
{
109 TDIEntityID entity_id
;
110 IFEntrySafelySized if_info
;
114 typedef struct _IP_SET_DATA
{
118 } IP_SET_DATA
, *PIP_SET_DATA
;
120 typedef enum _IPHLPAddrType
{
121 IPAAddr
, IPABcast
, IPAMask
, IFMtu
, IFStatus
125 NTSTATUS
getNthIpEntity( HANDLE tcpFile
, DWORD index
, TDIEntityID
*ent
);
126 NTSTATUS
tdiGetIpAddrsForIpEntity( HANDLE tcpFile
, TDIEntityID
*ent
,
127 IPAddrEntry
**addrs
, PDWORD numAddrs
);
128 int GetLongestChildKeyName( HANDLE RegHandle
);
129 LONG
OpenChildKeyRead( HANDLE RegHandle
,
131 PHKEY ReturnHandle
);
132 PWCHAR
GetNthChildKeyName( HANDLE RegHandle
, DWORD n
);
133 void ConsumeChildKeyName( PWCHAR Name
);
134 PWCHAR
QueryRegistryValueString( HANDLE RegHandle
, PWCHAR ValueName
);
135 void ConsumeRegValueString( PWCHAR NameServer
);
136 BOOL
isInterface( TDIEntityID
*if_maybe
);
137 BOOL
hasArp( HANDLE tcpFile
, TDIEntityID
*arp_maybe
);
139 typedef VOID (*EnumNameServersFunc
)( PWCHAR Interface
,
142 void EnumNameServers( HANDLE RegHandle
, PWCHAR Interface
, PVOID Data
, EnumNameServersFunc cb
);
145 /* This is here until we switch to version 2.5 of the mingw headers */
146 #if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
148 GetComputerNameExA(COMPUTER_NAME_FORMAT
,LPSTR
,LPDWORD
);
153 #define DPRINT(fmt,x...) DbgPrint("%s:%d:%s: " fmt, __FILE__, __LINE__, __FUNCTION__, ## x)
156 #endif/*IPPRIVATE_H*/