X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/91e46e62e5f9faf6735e0c41ce21113939cacb85..bc475bf02014dd7d97b5b9d20be2a191f6edd269:/include/client.h diff --git a/include/client.h b/include/client.h index a7e0636..42ffcf4 100644 --- a/include/client.h +++ b/include/client.h @@ -35,14 +35,12 @@ #endif #include "ircd_defs.h" -#include "linebuf.h" #include "channel.h" #include "res.h" #include "snomask.h" #include "irc_string.h" #include "sprintf_irc.h" #include "ircd.h" -#include "commio.h" /* other structs */ struct Blacklist; @@ -92,8 +90,8 @@ typedef struct ListClient list_client_t; */ struct User { - dlink_list channel; /* chain of channel pointer blocks */ - dlink_list invited; /* chain of invite pointer blocks */ + rb_dlink_list channel; /* chain of channel pointer blocks */ + rb_dlink_list invited; /* chain of invite pointer blocks */ char *away; /* pointer to away message */ int refcnt; /* Number of times this block is referenced */ @@ -104,8 +102,8 @@ struct Server { user_t *user; /* who activated this connection */ char by[NICKLEN]; - dlink_list servers; - dlink_list users; + rb_dlink_list servers; + rb_dlink_list users; int caps; /* capabilities bit-field */ char *fullcaps; struct scache_entry *nameinfo; @@ -136,8 +134,8 @@ struct ZipStats struct Client { - dlink_node node; - dlink_node lnode; + rb_dlink_node node; + rb_dlink_node lnode; user_t *user; /* ...defined, if this is a User */ server_t *serv; /* ...defined, if this is a server */ client_t *servptr; /* Points to server this Client is on */ @@ -182,7 +180,7 @@ struct Client /* list of who has this client on their allow list, its counterpart * is in LocalUser */ - dlink_list on_allow_list; + rb_dlink_list on_allow_list; local_user_t *localClient; pre_client_t *preClient; @@ -190,7 +188,7 @@ struct Client struct LocalUser { - dlink_node tnode; /* This is the node for the local list type the client is on*/ + rb_dlink_node tnode; /* This is the node for the local list type the client is on*/ /* * The following fields are allocated only for local clients * (directly connected to *this* server with a socket. @@ -235,7 +233,7 @@ struct LocalUser conf_item_t *att_conf; /* attached conf */ struct server_conf *att_sconf; - struct irc_sockaddr_storage ip; + struct rb_sockaddr_storage ip; time_t last_nick_change; int number_of_nick_changes; @@ -251,7 +249,7 @@ struct LocalUser char *fullcaps; int caps; /* capabilities bit-field */ - int fd; /* >= 0, for local clients */ + rb_fde_t *F; /* >= 0, for local clients */ /* time challenge response is valid for */ time_t chal_time; @@ -271,10 +269,10 @@ struct LocalUser time_t last; /* clients allowed to talk through +g */ - dlink_list allow_list; + rb_dlink_list allow_list; /* nicknames theyre monitoring */ - dlink_list monitor_list; + rb_dlink_list monitor_list; /* * Anti-flood stuff. We track how many messages were parsed and how @@ -290,7 +288,7 @@ struct LocalUser auth_request_t *auth_request; /* target change stuff */ - void *targets[10]; /* targets were aware of */ + uint32_t targets[10]; /* targets were aware of (fnv32(use_id(target_p))) */ unsigned int targinfo[2]; /* cyclic array, no in use */ time_t target_last; /* last time we cleared a slot */ @@ -298,6 +296,9 @@ struct LocalUser char *mangledhost; /* non-NULL if host mangling module loaded and applicable to this client */ + + struct rb_sockaddr_storage *lip; /* alloc before auth/freed after auth */ + struct _ssl_ctl *ssl_ctl; /* which ssl daemon we're associate with */ }; struct PreClient @@ -310,7 +311,7 @@ struct PreClient unsigned char sasl_out; unsigned char sasl_complete; - dlink_list dnsbl_queries; /* list of struct BlacklistClient * */ + rb_dlink_list dnsbl_queries; /* list of struct BlacklistClient * */ struct Blacklist *dnsbl_listed; /* first dnsbl where it's listed */ }; @@ -415,8 +416,11 @@ struct exit_client_hook #define FLAGS_DEAD 0x0002 /* Local socket is dead--Exiting soon */ #define FLAGS_KILLED 0x0004 /* Prevents "QUIT" from being sent for this */ #define FLAGS_SENTUSER 0x0008 /* Client sent a USER command. */ +#define FLAGS_CLICAP 0x0010 /* In CAP negotiation, wait for CAP END */ #define FLAGS_CLOSING 0x0020 /* set when closing to suppress errors */ +#define FLAGS_PING_COOKIE 0x0040 /* has sent ping cookie */ #define FLAGS_GOTID 0x0080 /* successful ident lookup achieved */ +#define FLAGS_FLOODDONE 0x0100 /* flood grace period over / reported */ #define FLAGS_NORMALEX 0x0400 /* Client exited normally */ #define FLAGS_SENDQEX 0x0800 /* Sendq exceeded */ #define FLAGS_SERVLINK 0x10000 /* servlink has servlink process */ @@ -451,16 +455,11 @@ struct exit_client_hook /* overflow flags */ /* EARLIER FLAGS ARE IN s_newconf.h */ -#define FLAGS2_EXEMPTRESV 0x0080000 -#define FLAGS2_EXEMPTGLINE 0x0100000 -#define FLAGS2_EXEMPTKLINE 0x0200000 -#define FLAGS2_EXEMPTFLOOD 0x0400000 -#define FLAGS2_NOLIMIT 0x0800000 -#define FLAGS2_IDLE_LINED 0x1000000 -#define FLAGS2_CLICAP 0x2000000 -#define FLAGS2_PING_COOKIE 0x4000000 -#define FLAGS2_IP_SPOOFING 0x8000000 -#define FLAGS2_FLOODDONE 0x10000000 +#define FLAGS2_EXEMPTRESV 0x00400000 +#define FLAGS2_EXEMPTGLINE 0x00800000 +#define FLAGS2_EXEMPTKLINE 0x01000000 +#define FLAGS2_EXEMPTFLOOD 0x02000000 +#define FLAGS2_IP_SPOOFING 0x10000000 #define FLAGS2_EXEMPTSPAMBOT 0x20000000 #define FLAGS2_EXEMPTSHIDE 0x40000000 #define FLAGS2_EXEMPTJUPE 0x80000000 @@ -540,8 +539,6 @@ struct exit_client_hook */ #define IsExemptKline(x) ((x)->flags2 & FLAGS2_EXEMPTKLINE) #define SetExemptKline(x) ((x)->flags2 |= FLAGS2_EXEMPTKLINE) -#define IsExemptLimits(x) ((x)->flags2 & FLAGS2_NOLIMIT) -#define SetExemptLimits(x) ((x)->flags2 |= FLAGS2_NOLIMIT) #define IsExemptGline(x) ((x)->flags2 & FLAGS2_EXEMPTGLINE) #define SetExemptGline(x) ((x)->flags2 |= FLAGS2_EXEMPTGLINE) #define IsExemptFlood(x) ((x)->flags2 & FLAGS2_EXEMPTFLOOD) @@ -557,14 +554,11 @@ struct exit_client_hook #define IsIPSpoof(x) ((x)->flags2 & FLAGS2_IP_SPOOFING) #define SetIPSpoof(x) ((x)->flags2 |= FLAGS2_IP_SPOOFING) -#define SetIdlelined(x) ((x)->flags2 |= FLAGS2_IDLE_LINED) -#define IsIdlelined(x) ((x)->flags2 & FLAGS2_IDLE_LINED) - /* for local users: flood grace period is over * for servers: mentioned in networknotice.c notice */ -#define IsFloodDone(x) ((x)->flags2 & FLAGS2_FLOODDONE) -#define SetFloodDone(x) ((x)->flags2 |= FLAGS2_FLOODDONE) +#define IsFloodDone(x) ((x)->flags & FLAGS_FLOODDONE) +#define SetFloodDone(x) ((x)->flags |= FLAGS_FLOODDONE) /* * definitions for get_client_name @@ -603,7 +597,7 @@ extern client_t *find_person(const char *); extern client_t *find_named_person(const char *); extern client_t *next_client(struct Client *, const char *); -#define accept_message(s, t) ((s) == (t) || (dlinkFind((s), &((t)->localClient->allow_list)))) +#define accept_message(s, t) ((s) == (t) || (rb_dlinkFind((s), &((t)->localClient->allow_list)))) extern void del_all_accepts(struct Client *client_p); extern void dead_link(struct Client *client_p); @@ -618,4 +612,7 @@ extern void close_connection(struct Client *); extern void init_uid(void); extern char *generate_uid(void); +void allocate_away(struct Client *); +void free_away(struct Client *); + #endif /* INCLUDED_client_h */