:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / drivers / net / tcpip / include / tcpip.h
1 /*
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
8  *                - Interface lock
9  *                - Interface list lock
10  *                - Prefix list lock
11  *                - Neighbor cache lock
12  *                - Route cache lock
13  */
14 #ifndef __TCPIP_H
15 #define __TCPIP_H
16
17 #ifdef _MSC_VER
18 #include <basetsd.h>
19 #include <ntddk.h>
20 #include <windef.h>
21 #include <ndis.h>
22 #include <tdikrnl.h>
23 #include <tdiinfo.h>
24 #else
25 #include <ddk/ntddk.h>
26 #include <net/ndis.h>
27 #include <net/tdikrnl.h>
28 #include <net/tdiinfo.h>
29 #endif
30
31 #include <debug.h>
32
33
34 /* Define _NTTEST_ to make test version. Device names are prefixed with
35    'NT' to allow the driver to run side by side with MS TCP/IP driver */
36 //#define _NTTEST_
37
38 /* FIXME: The following should be moved to ntddk.h or tdi headers */
39 #ifndef _MSC_VER
40
41 #ifndef IO_NETWORK_INCREMENT
42 #define IO_NETWORK_INCREMENT 2
43 #endif
44
45 #endif
46
47 #ifdef _MSC_VER
48 /* EXPORTED is already defined ddk/defines.h */
49 #define EXPORTED __declspec(dllexport)
50
51 #endif
52
53 #include <titypes.h>
54 #include <ticonsts.h>
55 #include <udp.h>
56
57
58 /* Macros */
59
60 #define MIN(value1, value2) \
61     ((value1 < value2)? value1 : value2)
62
63 #define MAX(value1, value2) \
64     ((value1 > value2)? value1 : value2)
65
66
67 #ifdef i386
68
69 /* DWORD network to host byte order conversion for i386 */
70 #define DN2H(dw) \
71     ((((dw) & 0xFF000000L) >> 24) | \
72          (((dw) & 0x00FF0000L) >> 8) | \
73          (((dw) & 0x0000FF00L) << 8) | \
74          (((dw) & 0x000000FFL) << 24))
75
76 /* DWORD host to network byte order conversion for i386 */
77 #define DH2N(dw) \
78         ((((dw) & 0xFF000000L) >> 24) | \
79          (((dw) & 0x00FF0000L) >> 8) | \
80          (((dw) & 0x0000FF00L) << 8) | \
81          (((dw) & 0x000000FFL) << 24))
82
83 /* WORD network to host order conversion for i386 */
84 #define WN2H(w) \
85         ((((w) & 0xFF00) >> 8) | \
86          (((w) & 0x00FF) << 8))
87
88 /* WORD host to network byte order conversion for i386 */
89 #define WH2N(w) \
90         ((((w) & 0xFF00) >> 8) | \
91          (((w) & 0x00FF) << 8))
92
93 #else /* i386 */
94
95 /* DWORD network to host byte order conversion for other architectures */
96 #define DN2H(dw) \
97     (dw)
98
99 /* DWORD host to network byte order conversion for other architectures */
100 #define DH2N(dw) \
101     (dw)
102
103 /* WORD network to host order conversion for other architectures */
104 #define WN2H(w) \
105     (w)
106
107 /* WORD host to network byte order conversion for other architectures */
108 #define WH2N(w) \
109     (w)
110
111 #endif /* i386 */
112
113
114 /* Global variable */
115 extern PDEVICE_OBJECT TCPDeviceObject;
116 extern PDEVICE_OBJECT UDPDeviceObject;
117 extern PDEVICE_OBJECT IPDeviceObject;
118 extern PDEVICE_OBJECT RawIPDeviceObject;
119 extern LIST_ENTRY InterfaceListHead;
120 extern KSPIN_LOCK InterfaceListLock;
121 extern LIST_ENTRY AddressFileListHead;
122 extern KSPIN_LOCK AddressFileListLock;
123 extern NDIS_HANDLE GlobalPacketPool;
124 extern NDIS_HANDLE GlobalBufferPool;
125 extern TDIEntityID *EntityList;
126 extern ULONG EntityCount;
127 extern UDP_STATISTICS UDPStats;
128
129 #endif /* __TCPIP_H */
130
131 /* EOF */