Sync with trunk for console graphics palettes.
[reactos.git] / dll / win32 / ws2_32 / include / ws2_32.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WinSock 2 DLL
4 * FILE: include/ws2_32.h
5 * PURPOSE: WinSock 2 DLL header
6 */
7 #ifndef __WS2_32_H
8 #define __WS2_32_H
9
10 #include <stdlib.h>
11 #include <stdio.h>
12
13 #define WIN32_NO_STATUS
14 #define _INC_WINDOWS
15 #define COM_NO_WINDOWS_H
16 #include <stdarg.h>
17 #include <windef.h>
18 #include <winbase.h>
19 #include <winnls.h>
20 #include <winuser.h>
21 #include <ws2spi.h>
22 #include <ws2tcpip.h>
23 #define NTOS_MODE_USER
24 #include <ndk/rtlfuncs.h>
25
26 #include <wsahelp.h>
27
28 #undef assert
29 #include <debug.h>
30 #include <windns.h> // DNS_A_DATA
31
32 #include "catalog.h"
33 #include "handle.h"
34 //#include "upcall.h"
35
36 #define EXPORT WINAPI
37
38 extern HINSTANCE g_hInstDll;
39 extern HANDLE GlobalHeap;
40 extern BOOL WsaInitialized; /* TRUE if WSAStartup() has been successfully called */
41 extern WSPUPCALLTABLE UpcallTable;
42
43 #define WS2_INTERNAL_MAX_ALIAS 16
44
45 typedef struct _WINSOCK_GETSERVBYNAME_CACHE
46 {
47 UINT Size;
48 SERVENT ServerEntry;
49 PCHAR Aliases[WS2_INTERNAL_MAX_ALIAS];
50 CHAR Data[1];
51 } WINSOCK_GETSERVBYNAME_CACHE, *PWINSOCK_GETSERVBYNAME_CACHE;
52
53 typedef struct _WINSOCK_GETSERVBYPORT_CACHE
54 {
55 UINT Size;
56 SERVENT ServerEntry;
57 PCHAR Aliases[WS2_INTERNAL_MAX_ALIAS];
58 CHAR Data[1];
59 } WINSOCK_GETSERVBYPORT_CACHE, *PWINSOCK_GETSERVBYPORT_CACHE;
60
61 typedef struct _WINSOCK_THREAD_BLOCK
62 {
63 INT LastErrorValue; /* Error value from last function that failed */
64 CHAR Intoa[16]; /* Buffer for inet_ntoa() */
65 PWINSOCK_GETSERVBYNAME_CACHE
66 Getservbyname; /* Buffer used by getservbyname */
67 PWINSOCK_GETSERVBYPORT_CACHE
68 Getservbyport; /* Buffer used by getservbyname */
69 struct hostent* Hostent;
70 } WINSOCK_THREAD_BLOCK, *PWINSOCK_THREAD_BLOCK;
71
72
73 /* Macros */
74
75 #define WSAINITIALIZED (WsaInitialized)
76
77 #define WSASETINITIALIZED (WsaInitialized = TRUE)
78
79 /* ws2_32 internal Functions */
80 void check_hostent(struct hostent **he);
81 void populate_hostent(struct hostent *he, char* name, IP4_ADDRESS addr);
82 void free_hostent(struct hostent *he);
83 void free_servent(struct servent* s);
84
85 #ifdef LE
86
87 /* DWORD network to host byte order conversion for little endian machines */
88 #define DN2H(dw) \
89 ((((dw) & 0xFF000000L) >> 24) | \
90 (((dw) & 0x00FF0000L) >> 8) | \
91 (((dw) & 0x0000FF00L) << 8) | \
92 (((dw) & 0x000000FFL) << 24))
93
94 /* DWORD host to network byte order conversion for little endian machines */
95 #define DH2N(dw) \
96 ((((dw) & 0xFF000000L) >> 24) | \
97 (((dw) & 0x00FF0000L) >> 8) | \
98 (((dw) & 0x0000FF00L) << 8) | \
99 (((dw) & 0x000000FFL) << 24))
100
101 /* WORD network to host order conversion for little endian machines */
102 #define WN2H(w) \
103 ((((w) & 0xFF00) >> 8) | \
104 (((w) & 0x00FF) << 8))
105
106 /* WORD host to network byte order conversion for little endian machines */
107 #define WH2N(w) \
108 ((((w) & 0xFF00) >> 8) | \
109 (((w) & 0x00FF) << 8))
110
111 #else /* LE */
112
113 /* DWORD network to host byte order conversion for big endian machines */
114 #define DN2H(dw) \
115 (dw)
116
117 /* DWORD host to network byte order conversion big endian machines */
118 #define DH2N(dw) \
119 (dw)
120
121 /* WORD network to host order conversion for big endian machines */
122 #define WN2H(w) \
123 (w)
124
125 /* WORD host to network byte order conversion for big endian machines */
126 #define WH2N(w) \
127 (w)
128
129 #endif /* LE */
130
131 #endif /* __WS2_32_H */
132
133 /* EOF */