Sunc with trunk revision 58971.
[reactos.git] / base / services / tcpsvcs / tcpsvcs.h
1 #define WIN32_NO_STATUS
2 #include <stdarg.h>
3 #include <windef.h>
4 #include <winbase.h>
5 #include <winsvc.h>
6 #include <stdlib.h>
7 #define _INC_WINDOWS
8 #include <winsock2.h>
9 #include <tchar.h>
10 #include <time.h>
11
12 #ifndef _MSC_VER
13 #define _swprintf swprintf
14 #endif
15
16 #define LOG_FILE 1
17 #define LOG_EVENTLOG 2
18 #define LOG_ERROR 4
19 #define LOG_ALL (LOG_FILE | LOG_EVENTLOG | LOG_ERROR)
20
21 /* default port numbers */
22 #define ECHO_PORT 7
23 #define DISCARD_PORT 9
24 #define DAYTIME_PORT 13
25 #define QOTD_PORT 17
26 #define CHARGEN_PORT 19
27
28 #define NUM_SERVICES 5
29 #define CS_TIMEOUT 1000
30
31
32 /* data structure to pass to threads */
33 typedef struct _Services
34 {
35 USHORT Port;
36 LPWSTR lpName;
37 LPTHREAD_START_ROUTINE lpService;
38 } SERVICES, *PSERVICES;
39
40 extern volatile BOOL bShutdown;
41 extern volatile BOOL bPause;
42
43 /* logging functions */
44 BOOL InitLogging(VOID);
45 VOID UninitLogging(VOID);
46 VOID LogEvent(LPCWSTR lpMsg, DWORD errNum, DWORD exitCode, UINT flags);
47
48 /* skelserver functions */
49 DWORD WINAPI StartServer(LPVOID lpParam);
50 BOOL ShutdownConnection(SOCKET Sock, BOOL bRec);
51
52 /* server thread handlers */
53 DWORD WINAPI ChargenHandler(VOID* sock_);
54 DWORD WINAPI DaytimeHandler(VOID* sock_);
55 DWORD WINAPI EchoHandler(VOID* sock_);
56 DWORD WINAPI DiscardHandler(VOID* sock_);
57 DWORD WINAPI QotdHandler(VOID* sock_);