8d407975bdcdf79111fa78130cc1d2c3f15bb872
[ircu2.10.12-pk.git] / include / s_serv.h
1 #ifndef S_SERV_H
2 #define S_SERV_H
3
4 #include "struct.h"
5
6 /*=============================================================================
7  * General defines
8  */
9
10 /*-----------------------------------------------------------------------------
11  * Macro's
12  */
13
14 #define STAT_PING               0
15 #define STAT_LOG                1       /* logfile for -x */
16 #define STAT_CONNECTING         2
17 #define STAT_HANDSHAKE          3
18 #define STAT_ME                 4
19 #define STAT_UNKNOWN            5
20 #define STAT_UNKNOWN_USER       6       /* Connect to client port */
21 #define STAT_UNKNOWN_SERVER     7       /* Connect to server port */
22 #define STAT_SERVER             8
23 #define STAT_USER               9
24
25 /* 
26  * for when you wanna create a bitmask of status values
27  */
28 #define StatusMask(T) (1<<(T))
29 #define IsStatMask(x, s) (StatusMask((x)->status) & (s))
30
31 /*
32  * status macros.
33  */
34 #define IsRegistered(x)         (IsStatMask(x, \
35                                         StatusMask(STAT_SERVER)|\
36                                         StatusMask(STAT_USER)))
37 #define IsConnecting(x)         ((x)->status == STAT_CONNECTING)
38 #define IsHandshake(x)          ((x)->status == STAT_HANDSHAKE)
39 #define IsMe(x)                 ((x)->status == STAT_ME)
40 #define IsUnknown(x)            (IsStatMask(x, \
41                                         StatusMask(STAT_UNKNOWN)|\
42                                         StatusMask(STAT_UNKNOWN_USER)|\
43                                         StatusMask(STAT_UNKNOWN_SERVER)))
44 #define IsServerPort(x)         ((x)->status == STAT_UNKNOWN_SERVER )
45 #define IsUserPort(x)           ((x)->status == STAT_UNKNOWN_USER )
46 #define IsClient(x)             (IsStatMask(x, \
47                                         StatusMask(STAT_HANDSHAKE)|\
48                                         StatusMask(STAT_ME)|\
49                                         StatusMask(STAT_UNKNOWN)|\
50                                         StatusMask(STAT_UNKNOWN_USER)|\
51                                         StatusMask(STAT_UNKNOWN_SERVER)|\
52                                         StatusMask(STAT_SERVER)|\
53                                         StatusMask(STAT_USER)))
54 #define IsTrusted(x)            (IsStatMask(x, \
55                                         StatusMask(STAT_PING)|\
56                                         StatusMask(STAT_LOG)|\
57                                         StatusMask(STAT_CONNECTING)|\
58                                         StatusMask(STAT_HANDSHAKE)|\
59                                         StatusMask(STAT_ME)|\
60                                         StatusMask(STAT_SERVER)))
61 #ifdef DEBUGMODE                /* Coredump if we miss something... */
62 #define IsServer(x)             ( ((x)->status == STAT_SERVER) && \
63                                   (((x)->serv) ? 1 : (*((char *) NULL) = 0)) )
64 #define IsUser(x)               ( ((x)->status == STAT_USER) && \
65                                   (((x)->user) ? 1 : (*((char *) NULL) = 0)) )
66 #else
67 #define IsServer(x)             ((x)->status == STAT_SERVER)
68 #define IsUser(x)               ((x)->status == STAT_USER)
69 #endif
70 #define IsLog(x)                ((x)->status == STAT_LOG)
71 #define IsPing(x)               ((x)->status == STAT_PING)
72
73 #define SetConnecting(x)        ((x)->status = STAT_CONNECTING)
74 #define SetHandshake(x)         ((x)->status = STAT_HANDSHAKE)
75 #define SetServer(x)            ((x)->status = STAT_SERVER)
76 #define SetMe(x)                ((x)->status = STAT_ME)
77 #define SetUser(x)              ((x)->status = STAT_USER)
78
79 /*=============================================================================
80  * Proto types
81  */
82
83 extern int m_server(aClient *cptr, aClient *sptr, int parc, char *parv[]);
84 extern int m_server_estab(aClient *cptr, aConfItem *aconf, aConfItem *bconf);
85 extern int m_error(aClient *cptr, aClient *sptr, int parc, char *parv[]);
86 extern int m_end_of_burst(aClient *cptr, aClient *sptr, int parc, char *parv[]);
87 extern int m_end_of_burst_ack(aClient *cptr, aClient *sptr,
88     int parc, char *parv[]);
89 extern int m_desynch(aClient *cptr, aClient *sptr, int parc, char *parv[]);
90
91 extern unsigned int max_connection_count, max_client_count;
92
93 #endif /* S_SERV_H */