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 */
|