2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS TCP/IP protocol driver
4 * FILE: include/tcpip.h
5 * PURPOSE: TCP/IP protocol driver definitions
6 * NOTES: Spin lock acquire order:
7 * - Net table list lock
9 * - Interface list lock
11 * - Neighbor cache lock
33 #define TAG_STRING ' RTS' /* string */
35 /* Define _NTTEST_ to make test version. Device names are prefixed with
36 'NT' to allow the driver to run side by side with MS TCP/IP driver */
39 /* FIXME: The following should be moved to ntddk.h or tdi headers */
42 #ifndef IO_NETWORK_INCREMENT
43 #define IO_NETWORK_INCREMENT 2
49 /* EXPORTED is already defined ddk/defines.h */
50 #define EXPORTED __declspec(dllexport)
59 #define MIN(value1, value2) \
60 ((value1 < value2)? value1 : value2)
62 #define MAX(value1, value2) \
63 ((value1 > value2)? value1 : value2)
65 #define NDIS_BUFFER_TAG FOURCC('n','b','u','f')
66 #define NDIS_PACKET_TAG FOURCC('n','p','k','t')
70 /* DWORD network to host byte order conversion for i386 */
72 ((((dw) & 0xFF000000L) >> 24) | \
73 (((dw) & 0x00FF0000L) >> 8) | \
74 (((dw) & 0x0000FF00L) << 8) | \
75 (((dw) & 0x000000FFL) << 24))
77 /* DWORD host to network byte order conversion for i386 */
79 ((((dw) & 0xFF000000L) >> 24) | \
80 (((dw) & 0x00FF0000L) >> 8) | \
81 (((dw) & 0x0000FF00L) << 8) | \
82 (((dw) & 0x000000FFL) << 24))
84 /* WORD network to host order conversion for i386 */
86 ((((w) & 0xFF00) >> 8) | \
87 (((w) & 0x00FF) << 8))
89 /* WORD host to network byte order conversion for i386 */
91 ((((w) & 0xFF00) >> 8) | \
92 (((w) & 0x00FF) << 8))
96 /* DWORD network to host byte order conversion for other architectures */
100 /* DWORD host to network byte order conversion for other architectures */
104 /* WORD network to host order conversion for other architectures */
108 /* WORD host to network byte order conversion for other architectures */
114 /* AF_INET and other things Arty likes to use ;) */
116 #define SOCK_STREAM 1
118 /* Should use TDI structure, but Arty wants to keep BSD style */
119 typedef unsigned char u_char
;
120 typedef unsigned short u_short
;
121 typedef unsigned int u_int
;
122 typedef unsigned long u_long
;
127 struct { u_char s_b1
,s_b2
,s_b3
,s_b4
; } S_un_b
;
128 struct { u_short s_w1
,s_w2
; } S_un_w
;
131 #define s_addr S_un.S_addr
132 #define s_host S_un.S_un_b.s_b2
133 #define s_net S_un.S_un_b.s_b1
134 #define s_imp S_un.S_un_w.s_w2
135 #define s_impno S_un.S_un_b.s_b4
136 #define s_lh S_un.S_un_b.s_b3
142 struct in_addr sin_addr
;
145 typedef struct sockaddr_in SOCKADDR_IN
;
152 /* Sufficient information to manage the entity list */
161 #define htons(x) ((((x) & 0xff) << 8) | (((x) >> 8) & 0xff))
164 /* Global variable */
165 extern PDEVICE_OBJECT TCPDeviceObject
;
166 extern PDEVICE_OBJECT UDPDeviceObject
;
167 extern PDEVICE_OBJECT IPDeviceObject
;
168 extern PDEVICE_OBJECT RawIPDeviceObject
;
169 extern LIST_ENTRY InterfaceListHead
;
170 extern KSPIN_LOCK InterfaceListLock
;
171 extern LIST_ENTRY AddressFileListHead
;
172 extern KSPIN_LOCK AddressFileListLock
;
173 extern NDIS_HANDLE GlobalPacketPool
;
174 extern NDIS_HANDLE GlobalBufferPool
;
175 extern KSPIN_LOCK EntityListLock
;
176 extern TDIEntityInfo
*EntityList
;
177 extern ULONG EntityCount
;
178 extern ULONG EntityMax
;
180 extern NTSTATUS
TiGetProtocolNumber( PUNICODE_STRING FileName
,