4 #define NtCurrentTeb NtXCurrentTeb
10 #ifdef HAVE_NETINET_IN_H
11 # include <netinet/in.h>
13 #ifdef HAVE_ARPA_INET_H
14 # include <arpa/inet.h>
16 #ifdef HAVE_ARPA_NAMESER_H
17 # include <arpa/nameser.h>
23 #define WIN32_NO_STATUS
27 #define NTOS_MODE_USER
28 #include <ndk/iofuncs.h>
29 #include <ndk/obfuncs.h>
30 #include <ndk/rtlfuncs.h>
35 #include "wine/debug.h"
42 //#include "ntddndis.h"
58 #define INADDR_NONE (~0U)
61 #ifndef IFENT_SOFTWARE_LOOPBACK
62 #define IFENT_SOFTWARE_LOOPBACK 24 /* This is an SNMP constant from rfc1213 */
63 #endif/*IFENT_SOFTWARE_LOOPBACK*/
65 #define INDEX_IS_LOOPBACK 0x00800000
67 /* Type declarations */
73 #define TCP_REQUEST_QUERY_INFORMATION_INIT { { { 0 } } }
74 #define TCP_REQUEST_SET_INFORMATION_INIT { { 0 } }
76 /* FIXME: ROS headers suck */
77 #ifndef GAA_FLAG_SKIP_UNICAST
78 #define GAA_FLAG_SKIP_UNICAST 0x0001
81 #ifndef GAA_FLAG_SKIP_FRIENDLY_NAME
82 #define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
85 // As in the mib from RFC 1213
87 typedef struct _IPRouteEntry
{
89 ULONG ire_index
; //matches if_index in IFEntry and iae_index in IPAddrEntry
103 /* No caddr_t in reactos headers */
104 typedef char *caddr_t
;
106 typedef union _IFEntrySafelySized
{
107 CHAR MaxSize
[sizeof(DWORD
) +
109 MAX_ADAPTER_DESCRIPTION_LENGTH
+ 1];
111 } IFEntrySafelySized
;
113 typedef union _TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
{
114 CHAR MaxSize
[sizeof(TCP_REQUEST_SET_INFORMATION_EX
) - 1 +
115 sizeof(IPRouteEntry
)];
116 TCP_REQUEST_SET_INFORMATION_EX Req
;
117 } TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
,
118 *PTCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
;
120 typedef union _TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
{
121 CHAR MaxSize
[sizeof(TCP_REQUEST_SET_INFORMATION_EX
) - 1 +
122 sizeof(MIB_IPNETROW
)];
123 TCP_REQUEST_SET_INFORMATION_EX Req
;
124 } TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
,
125 *PTCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
;
127 /* Encapsulates information about an interface */
128 typedef struct _IFInfo
{
129 TDIEntityID entity_id
;
130 IFEntrySafelySized if_info
;
134 typedef struct _IP_SET_DATA
{
138 } IP_SET_DATA
, *PIP_SET_DATA
;
140 typedef enum _IPHLPAddrType
{
141 IPAAddr
, IPABcast
, IPAMask
, IFMtu
, IFStatus
145 NTSTATUS
getNthIpEntity( HANDLE tcpFile
, DWORD index
, TDIEntityID
*ent
);
146 NTSTATUS
tdiGetIpAddrsForIpEntity( HANDLE tcpFile
, TDIEntityID
*ent
,
147 IPAddrEntry
**addrs
, PDWORD numAddrs
);
148 int GetLongestChildKeyName( HANDLE RegHandle
);
149 LONG
OpenChildKeyRead( HANDLE RegHandle
,
151 PHKEY ReturnHandle
);
152 PWCHAR
GetNthChildKeyName( HANDLE RegHandle
, DWORD n
);
153 void ConsumeChildKeyName( PWCHAR Name
);
154 PWCHAR
QueryRegistryValueString( HANDLE RegHandle
, PWCHAR ValueName
);
155 PWCHAR
*QueryRegistryValueStringMulti( HANDLE RegHandle
, PWCHAR ValueName
);
156 void ConsumeRegValueString( PWCHAR NameServer
);
157 BOOL
isInterface( TDIEntityID
*if_maybe
);
158 BOOL
hasArp( HANDLE tcpFile
, TDIEntityID
*arp_maybe
);
160 typedef VOID (*EnumNameServersFunc
)( PWCHAR Interface
,
163 LSTATUS
EnumNameServers( HKEY RegHandle
, LPWSTR Interface
, PVOID Data
, EnumNameServersFunc cb
);
164 NTSTATUS
getIPAddrEntryForIf(HANDLE tcpFile
,
170 /* This is here until we switch to version 2.5 of the mingw headers */
171 #if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
173 GetComputerNameExA(COMPUTER_NAME_FORMAT
,LPSTR
,LPDWORD
);
176 #endif/*IPPRIVATE_H*/