4 #define NtCurrentTeb NtXCurrentTeb
8 //#include <sys/types.h>
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>
22 #define WIN32_NO_STATUS
24 #define COM_NO_WINDOWS_H
31 #define NTOS_MODE_USER
32 #include <ndk/iofuncs.h>
33 #include <ndk/obfuncs.h>
34 #include <ndk/rtlfuncs.h>
37 #include <wine/debug.h>
57 #define INADDR_NONE (~0U)
60 #ifndef IFENT_SOFTWARE_LOOPBACK
61 #define IFENT_SOFTWARE_LOOPBACK 24 /* This is an SNMP constant from rfc1213 */
62 #endif/*IFENT_SOFTWARE_LOOPBACK*/
64 #define INDEX_IS_LOOPBACK 0x00800000
66 /* Type declarations */
72 #define TCP_REQUEST_QUERY_INFORMATION_INIT { { { 0 } } }
73 #define TCP_REQUEST_SET_INFORMATION_INIT { { 0 } }
75 /* FIXME: ROS headers suck */
76 #ifndef GAA_FLAG_SKIP_UNICAST
77 #define GAA_FLAG_SKIP_UNICAST 0x0001
80 #ifndef GAA_FLAG_SKIP_FRIENDLY_NAME
81 #define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
84 // As in the mib from RFC 1213
86 typedef struct _IPRouteEntry
{
88 ULONG ire_index
; //matches if_index in IFEntry and iae_index in IPAddrEntry
102 /* No caddr_t in reactos headers */
103 typedef char *caddr_t
;
105 typedef union _IFEntrySafelySized
{
106 CHAR MaxSize
[sizeof(DWORD
) +
108 MAX_ADAPTER_DESCRIPTION_LENGTH
+ 1];
110 } IFEntrySafelySized
;
112 typedef union _TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
{
113 CHAR MaxSize
[sizeof(TCP_REQUEST_SET_INFORMATION_EX
) - 1 +
114 sizeof(IPRouteEntry
)];
115 TCP_REQUEST_SET_INFORMATION_EX Req
;
116 } TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
,
117 *PTCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
;
119 typedef union _TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
{
120 CHAR MaxSize
[sizeof(TCP_REQUEST_SET_INFORMATION_EX
) - 1 +
121 sizeof(MIB_IPNETROW
)];
122 TCP_REQUEST_SET_INFORMATION_EX Req
;
123 } TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
,
124 *PTCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
;
126 /* Encapsulates information about an interface */
127 typedef struct _IFInfo
{
128 TDIEntityID entity_id
;
129 IFEntrySafelySized if_info
;
133 typedef struct _IP_SET_DATA
{
137 } IP_SET_DATA
, *PIP_SET_DATA
;
139 typedef enum _IPHLPAddrType
{
140 IPAAddr
, IPABcast
, IPAMask
, IFMtu
, IFStatus
144 NTSTATUS
getNthIpEntity( HANDLE tcpFile
, DWORD index
, TDIEntityID
*ent
);
145 NTSTATUS
tdiGetIpAddrsForIpEntity( HANDLE tcpFile
, TDIEntityID
*ent
,
146 IPAddrEntry
**addrs
, PDWORD numAddrs
);
147 int GetLongestChildKeyName( HANDLE RegHandle
);
148 LONG
OpenChildKeyRead( HANDLE RegHandle
,
150 PHKEY ReturnHandle
);
151 PWCHAR
GetNthChildKeyName( HANDLE RegHandle
, DWORD n
);
152 void ConsumeChildKeyName( PWCHAR Name
);
153 PWCHAR
QueryRegistryValueString( HANDLE RegHandle
, PWCHAR ValueName
);
154 PWCHAR
*QueryRegistryValueStringMulti( HANDLE RegHandle
, PWCHAR ValueName
);
155 void ConsumeRegValueString( PWCHAR NameServer
);
156 BOOL
isInterface( TDIEntityID
*if_maybe
);
157 BOOL
hasArp( HANDLE tcpFile
, TDIEntityID
*arp_maybe
);
159 typedef VOID (*EnumNameServersFunc
)( PWCHAR Interface
,
162 LSTATUS
EnumNameServers( HKEY RegHandle
, LPWSTR Interface
, PVOID Data
, EnumNameServersFunc cb
);
163 NTSTATUS
getIPAddrEntryForIf(HANDLE tcpFile
,
169 /* This is here until we switch to version 2.5 of the mingw headers */
170 #if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
172 GetComputerNameExA(COMPUTER_NAME_FORMAT
,LPSTR
,LPDWORD
);
175 #endif/*IPPRIVATE_H*/