File: s_serv.h

package info (click to toggle)
ircd 2.10.07-1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 2,232 kB
  • ctags: 2,253
  • sloc: ansic: 27,541; makefile: 742; sh: 327; perl: 18
file content (98 lines) | stat: -rw-r--r-- 3,438 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#ifndef S_SERV_H
#define S_SERV_H

#include "struct.h"

/*=============================================================================
 * General defines
 */

/*-----------------------------------------------------------------------------
 * Macro's
 */

#define STAT_PING		0
#define STAT_LOG		1	/* logfile for -x */
#define STAT_MASTER		2	/* Local ircd master before identification */
#define STAT_CONNECTING		3
#define STAT_HANDSHAKE		4
#define STAT_ME			5
#define STAT_UNKNOWN		6
#define STAT_UNKNOWN_USER	7	/* Connect to client port */
#define STAT_UNKNOWN_SERVER	8	/* Connect to server port */
#define STAT_SERVER		9
#define STAT_USER		10

/* 
 * for when you wanna create a bitmask of status values
 */
#define StatusMask(T) (1<<(T))
#define IsStatMask(x, s) (StatusMask((x)->status) & (s))

/*
 * status macros.
 */
#define IsRegistered(x)		(IsStatMask(x, \
					StatusMask(STAT_SERVER)|\
					StatusMask(STAT_USER)))
#define IsConnecting(x)		((x)->status == STAT_CONNECTING)
#define IsHandshake(x)		((x)->status == STAT_HANDSHAKE)
#define IsMe(x)			((x)->status == STAT_ME)
#define IsUnknown(x)		(IsStatMask(x, \
					StatusMask(STAT_UNKNOWN)|\
					StatusMask(STAT_UNKNOWN_USER)|\
					StatusMask(STAT_UNKNOWN_SERVER)|\
					StatusMask(STAT_MASTER)))
#define IsServerPort(x)		((x)->status == STAT_UNKNOWN_SERVER )
#define IsUserPort(x)		((x)->status == STAT_UNKNOWN_USER )
#define IsMaster(x)		((x)->status == STAT_MASTER)
#define IsClient(x)		(IsStatMask(x, \
					StatusMask(STAT_MASTER)|\
					StatusMask(STAT_HANDSHAKE)|\
					StatusMask(STAT_ME)|\
					StatusMask(STAT_UNKNOWN)|\
					StatusMask(STAT_UNKNOWN_USER)|\
					StatusMask(STAT_UNKNOWN_SERVER)|\
					StatusMask(STAT_SERVER)|\
					StatusMask(STAT_USER)))
#define IsTrusted(x)		(IsStatMask(x, \
					StatusMask(STAT_PING)|\
					StatusMask(STAT_LOG)|\
					StatusMask(STAT_CONNECTING)|\
					StatusMask(STAT_HANDSHAKE)|\
					StatusMask(STAT_ME)|\
					StatusMask(STAT_SERVER)))
#ifdef DEBUGMODE		/* Coredump if we miss something... */
#define IsServer(x)		( ((x)->status == STAT_SERVER) && \
                                  (((x)->serv) ? 1 : (*((char *) NULL) = 0)) )
#define IsUser(x)		( ((x)->status == STAT_USER) && \
                                  (((x)->user) ? 1 : (*((char *) NULL) = 0)) )
#else
#define IsServer(x)		((x)->status == STAT_SERVER)
#define IsUser(x)		((x)->status == STAT_USER)
#endif
#define IsLog(x)		((x)->status == STAT_LOG)
#define IsPing(x)		((x)->status == STAT_PING)

#define SetMaster(x)		((x)->status = STAT_MASTER)
#define SetConnecting(x)	((x)->status = STAT_CONNECTING)
#define SetHandshake(x)		((x)->status = STAT_HANDSHAKE)
#define SetServer(x)		((x)->status = STAT_SERVER)
#define SetMe(x)		((x)->status = STAT_ME)
#define SetUser(x)		((x)->status = STAT_USER)

/*=============================================================================
 * Proto types
 */

extern int m_server(aClient *cptr, aClient *sptr, int parc, char *parv[]);
extern int m_server_estab(aClient *cptr, aConfItem *aconf, aConfItem *bconf);
extern int m_error(aClient *cptr, aClient *sptr, int parc, char *parv[]);
extern int m_end_of_burst(aClient *cptr, aClient *sptr, int parc, char *parv[]);
extern int m_end_of_burst_ack(aClient *cptr, aClient *sptr,
    int parc, char *parv[]);
extern int m_desynch(aClient *cptr, aClient *sptr, int parc, char *parv[]);

extern unsigned int max_connection_count, max_client_count;

#endif /* S_SERV_H */