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