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>
22 #define WIN32_NO_STATUS
26 #define NTOS_MODE_USER
27 #include <ndk/ntndk.h>
32 #include "wine/debug.h"
34 //#include "ntddndis.h"
35 #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 /* FIXME: ROS headers suck */
64 #ifndef GAA_FLAG_SKIP_UNICAST
65 #define GAA_FLAG_SKIP_UNICAST 0x0001
68 #ifndef GAA_FLAG_SKIP_FRIENDLY_NAME
69 #define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
72 // As in the mib from RFC 1213
74 typedef struct _IPRouteEntry
{
76 ULONG ire_index
; //matches if_index in IFEntry and iae_index in IPAddrEntry
90 /* No caddr_t in reactos headers */
91 typedef char *caddr_t
;
93 typedef union _IFEntrySafelySized
{
94 CHAR MaxSize
[sizeof(DWORD
) +
96 MAX_ADAPTER_DESCRIPTION_LENGTH
+ 1];
100 typedef union _TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
{
101 CHAR MaxSize
[sizeof(TCP_REQUEST_SET_INFORMATION_EX
) - 1 +
102 sizeof(IPRouteEntry
)];
103 TCP_REQUEST_SET_INFORMATION_EX Req
;
104 } TCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
,
105 *PTCP_REQUEST_SET_INFORMATION_EX_ROUTE_ENTRY
;
107 typedef union _TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
{
108 CHAR MaxSize
[sizeof(TCP_REQUEST_SET_INFORMATION_EX
) - 1 +
109 sizeof(MIB_IPNETROW
)];
110 TCP_REQUEST_SET_INFORMATION_EX Req
;
111 } TCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
,
112 *PTCP_REQUEST_SET_INFORMATION_EX_ARP_ENTRY
;
114 /* Encapsulates information about an interface */
115 typedef struct _IFInfo
{
116 TDIEntityID entity_id
;
117 IFEntrySafelySized if_info
;
121 typedef struct _IP_SET_DATA
{
125 } IP_SET_DATA
, *PIP_SET_DATA
;
127 typedef enum _IPHLPAddrType
{
128 IPAAddr
, IPABcast
, IPAMask
, IFMtu
, IFStatus
132 NTSTATUS
getNthIpEntity( HANDLE tcpFile
, DWORD index
, TDIEntityID
*ent
);
133 NTSTATUS
tdiGetIpAddrsForIpEntity( HANDLE tcpFile
, TDIEntityID
*ent
,
134 IPAddrEntry
**addrs
, PDWORD numAddrs
);
135 int GetLongestChildKeyName( HANDLE RegHandle
);
136 LONG
OpenChildKeyRead( HANDLE RegHandle
,
138 PHKEY ReturnHandle
);
139 PWCHAR
GetNthChildKeyName( HANDLE RegHandle
, DWORD n
);
140 void ConsumeChildKeyName( PWCHAR Name
);
141 PWCHAR
QueryRegistryValueString( HANDLE RegHandle
, PWCHAR ValueName
);
142 void ConsumeRegValueString( PWCHAR NameServer
);
143 BOOL
isInterface( TDIEntityID
*if_maybe
);
144 BOOL
hasArp( HANDLE tcpFile
, TDIEntityID
*arp_maybe
);
146 typedef VOID (*EnumNameServersFunc
)( PWCHAR Interface
,
149 void EnumNameServers( HANDLE RegHandle
, PWCHAR Interface
, PVOID Data
, EnumNameServersFunc cb
);
150 NTSTATUS
getIPAddrEntryForIf(HANDLE tcpFile
,
156 /* This is here until we switch to version 2.5 of the mingw headers */
157 #if (__W32API_MAJOR_VERSION < 2 || __W32API_MINOR_VERSION < 5)
159 GetComputerNameExA(COMPUTER_NAME_FORMAT
,LPSTR
,LPDWORD
);
164 #define DPRINT(fmt,x...) DbgPrint("%s:%d:%s: " fmt, __FILE__, __LINE__, __FUNCTION__, ## x)
167 #endif/*IPPRIVATE_H*/