Get rid of flags2.
It seems to come from an era where long long didn't exist and 64-bit machines weren't common. 32-bit machines are still common but I can't imagine this will have much performance impact there. This "fixes" #179 in title only, but see comments within.
This commit is contained in:
parent
9057170ce8
commit
66f7fe673b
6 changed files with 85 additions and 87 deletions
|
@ -115,8 +115,7 @@ struct Client
|
||||||
|
|
||||||
time_t tsinfo; /* TS on the nick, SVINFO on server */
|
time_t tsinfo; /* TS on the nick, SVINFO on server */
|
||||||
unsigned int umodes; /* opers, normal users subset */
|
unsigned int umodes; /* opers, normal users subset */
|
||||||
unsigned int flags; /* client flags */
|
uint64_t flags; /* client flags */
|
||||||
unsigned int flags2; /* ugh. overflow */
|
|
||||||
|
|
||||||
unsigned int snomask; /* server notice mask */
|
unsigned int snomask; /* server notice mask */
|
||||||
|
|
||||||
|
@ -388,26 +387,35 @@ struct ListClient
|
||||||
|
|
||||||
/* housekeeping flags */
|
/* housekeeping flags */
|
||||||
|
|
||||||
#define FLAGS_PINGSENT 0x0001 /* Unreplied ping sent */
|
#define FLAGS_PINGSENT 0x00000001 /* Unreplied ping sent */
|
||||||
#define FLAGS_DEAD 0x0002 /* Local socket is dead--Exiting soon */
|
#define FLAGS_DEAD 0x00000002 /* Local socket is dead--Exiting soon */
|
||||||
#define FLAGS_KILLED 0x0004 /* Prevents "QUIT" from being sent for this */
|
#define FLAGS_KILLED 0x00000004 /* Prevents "QUIT" from being sent for this */
|
||||||
#define FLAGS_SENTUSER 0x0008 /* Client sent a USER command. */
|
#define FLAGS_SENTUSER 0x00000008 /* Client sent a USER command. */
|
||||||
#define FLAGS_CLICAP 0x0010 /* In CAP negotiation, wait for CAP END */
|
#define FLAGS_CLICAP 0x00000010 /* In CAP negotiation, wait for CAP END */
|
||||||
#define FLAGS_CLOSING 0x0020 /* set when closing to suppress errors */
|
#define FLAGS_CLOSING 0x00000020 /* set when closing to suppress errors */
|
||||||
#define FLAGS_PING_COOKIE 0x0040 /* has sent ping cookie */
|
#define FLAGS_PING_COOKIE 0x00000040 /* has sent ping cookie */
|
||||||
#define FLAGS_GOTID 0x0080 /* successful ident lookup achieved */
|
#define FLAGS_GOTID 0x00000080 /* successful ident lookup achieved */
|
||||||
#define FLAGS_FLOODDONE 0x0100 /* flood grace period over / reported */
|
#define FLAGS_FLOODDONE 0x00000100 /* flood grace period over / reported */
|
||||||
#define FLAGS_NORMALEX 0x0400 /* Client exited normally */
|
#define FLAGS_NORMALEX 0x00000200 /* Client exited normally */
|
||||||
#define FLAGS_MARK 0x10000 /* marked client */
|
#define FLAGS_MARK 0x00000400 /* marked client */
|
||||||
#define FLAGS_HIDDEN 0x20000 /* hidden server */
|
#define FLAGS_HIDDEN 0x00000800 /* hidden server */
|
||||||
#define FLAGS_EOB 0x40000 /* EOB */
|
#define FLAGS_EOB 0x00001000 /* EOB */
|
||||||
#define FLAGS_MYCONNECT 0x80000 /* MyConnect */
|
#define FLAGS_MYCONNECT 0x00002000 /* MyConnect */
|
||||||
#define FLAGS_IOERROR 0x100000 /* IO error */
|
#define FLAGS_IOERROR 0x00004000 /* IO error */
|
||||||
#define FLAGS_SERVICE 0x200000 /* network service */
|
#define FLAGS_SERVICE 0x00008000 /* network service */
|
||||||
#define FLAGS_TGCHANGE 0x400000 /* we're allowed to clear something */
|
#define FLAGS_TGCHANGE 0x00010000 /* we're allowed to clear something */
|
||||||
#define FLAGS_DYNSPOOF 0x800000 /* dynamic spoof, only opers see ip */
|
#define FLAGS_DYNSPOOF 0x00020000 /* dynamic spoof, only opers see ip */
|
||||||
#define FLAGS_TGEXCESSIVE 0x1000000 /* whether the client has attemped to change targets excessively fast */
|
#define FLAGS_TGEXCESSIVE 0x00040000 /* whether the client has attemped to change targets excessively fast */
|
||||||
#define FLAGS_CLICAP_DATA 0x2000000 /* requested CAP LS 302 */
|
#define FLAGS_CLICAP_DATA 0x00080000 /* requested CAP LS 302 */
|
||||||
|
#define FLAGS_EXTENDCHANS 0x00100000
|
||||||
|
#define FLAGS_EXEMPTRESV 0x00200000
|
||||||
|
#define FLAGS_EXEMPTKLINE 0x00400000
|
||||||
|
#define FLAGS_EXEMPTFLOOD 0x00800000
|
||||||
|
#define FLAGS_IP_SPOOFING 0x01000000
|
||||||
|
#define FLAGS_EXEMPTSPAMBOT 0x02000000
|
||||||
|
#define FLAGS_EXEMPTSHIDE 0x04000000
|
||||||
|
#define FLAGS_EXEMPTJUPE 0x08000000
|
||||||
|
|
||||||
|
|
||||||
/* flags for local clients, this needs stuff moved from above to here at some point */
|
/* flags for local clients, this needs stuff moved from above to here at some point */
|
||||||
#define LFLAGS_SSL 0x00000001
|
#define LFLAGS_SSL 0x00000001
|
||||||
|
@ -432,17 +440,6 @@ struct ListClient
|
||||||
#define UMODE_ADMIN 0x2000 /* Admin on server */
|
#define UMODE_ADMIN 0x2000 /* Admin on server */
|
||||||
#define UMODE_SSLCLIENT 0x4000 /* using SSL */
|
#define UMODE_SSLCLIENT 0x4000 /* using SSL */
|
||||||
|
|
||||||
/* overflow flags */
|
|
||||||
/* EARLIER FLAGS ARE IN s_newconf.h */
|
|
||||||
#define FLAGS2_EXTENDCHANS 0x00200000
|
|
||||||
#define FLAGS2_EXEMPTRESV 0x00400000
|
|
||||||
#define FLAGS2_EXEMPTKLINE 0x00800000
|
|
||||||
#define FLAGS2_EXEMPTFLOOD 0x01000000
|
|
||||||
#define FLAGS2_IP_SPOOFING 0x10000000
|
|
||||||
#define FLAGS2_EXEMPTSPAMBOT 0x20000000
|
|
||||||
#define FLAGS2_EXEMPTSHIDE 0x40000000
|
|
||||||
#define FLAGS2_EXEMPTJUPE 0x80000000
|
|
||||||
|
|
||||||
#define DEFAULT_OPER_UMODES (UMODE_SERVNOTICE | UMODE_OPERWALL | \
|
#define DEFAULT_OPER_UMODES (UMODE_SERVNOTICE | UMODE_OPERWALL | \
|
||||||
UMODE_WALLOP | UMODE_LOCOPS)
|
UMODE_WALLOP | UMODE_LOCOPS)
|
||||||
#define DEFAULT_OPER_SNOMASK SNO_GENERAL
|
#define DEFAULT_OPER_SNOMASK SNO_GENERAL
|
||||||
|
@ -524,25 +521,22 @@ struct ListClient
|
||||||
#define SetGotId(x) ((x)->flags |= FLAGS_GOTID)
|
#define SetGotId(x) ((x)->flags |= FLAGS_GOTID)
|
||||||
#define IsGotId(x) (((x)->flags & FLAGS_GOTID) != 0)
|
#define IsGotId(x) (((x)->flags & FLAGS_GOTID) != 0)
|
||||||
|
|
||||||
/*
|
#define IsExemptKline(x) ((x)->flags & FLAGS_EXEMPTKLINE)
|
||||||
* flags2 macros.
|
#define SetExemptKline(x) ((x)->flags |= FLAGS_EXEMPTKLINE)
|
||||||
*/
|
#define IsExemptFlood(x) ((x)->flags & FLAGS_EXEMPTFLOOD)
|
||||||
#define IsExemptKline(x) ((x)->flags2 & FLAGS2_EXEMPTKLINE)
|
#define SetExemptFlood(x) ((x)->flags |= FLAGS_EXEMPTFLOOD)
|
||||||
#define SetExemptKline(x) ((x)->flags2 |= FLAGS2_EXEMPTKLINE)
|
#define IsExemptSpambot(x) ((x)->flags & FLAGS_EXEMPTSPAMBOT)
|
||||||
#define IsExemptFlood(x) ((x)->flags2 & FLAGS2_EXEMPTFLOOD)
|
#define SetExemptSpambot(x) ((x)->flags |= FLAGS_EXEMPTSPAMBOT)
|
||||||
#define SetExemptFlood(x) ((x)->flags2 |= FLAGS2_EXEMPTFLOOD)
|
#define IsExemptShide(x) ((x)->flags & FLAGS_EXEMPTSHIDE)
|
||||||
#define IsExemptSpambot(x) ((x)->flags2 & FLAGS2_EXEMPTSPAMBOT)
|
#define SetExemptShide(x) ((x)->flags |= FLAGS_EXEMPTSHIDE)
|
||||||
#define SetExemptSpambot(x) ((x)->flags2 |= FLAGS2_EXEMPTSPAMBOT)
|
#define IsExemptJupe(x) ((x)->flags & FLAGS_EXEMPTJUPE)
|
||||||
#define IsExemptShide(x) ((x)->flags2 & FLAGS2_EXEMPTSHIDE)
|
#define SetExemptJupe(x) ((x)->flags |= FLAGS_EXEMPTJUPE)
|
||||||
#define SetExemptShide(x) ((x)->flags2 |= FLAGS2_EXEMPTSHIDE)
|
#define IsExemptResv(x) ((x)->flags & FLAGS_EXEMPTRESV)
|
||||||
#define IsExemptJupe(x) ((x)->flags2 & FLAGS2_EXEMPTJUPE)
|
#define SetExemptResv(x) ((x)->flags |= FLAGS_EXEMPTRESV)
|
||||||
#define SetExemptJupe(x) ((x)->flags2 |= FLAGS2_EXEMPTJUPE)
|
#define IsIPSpoof(x) ((x)->flags & FLAGS_IP_SPOOFING)
|
||||||
#define IsExemptResv(x) ((x)->flags2 & FLAGS2_EXEMPTRESV)
|
#define SetIPSpoof(x) ((x)->flags |= FLAGS_IP_SPOOFING)
|
||||||
#define SetExemptResv(x) ((x)->flags2 |= FLAGS2_EXEMPTRESV)
|
#define IsExtendChans(x) ((x)->flags & FLAGS_EXTENDCHANS)
|
||||||
#define IsIPSpoof(x) ((x)->flags2 & FLAGS2_IP_SPOOFING)
|
#define SetExtendChans(x) ((x)->flags |= FLAGS_EXTENDCHANS)
|
||||||
#define SetIPSpoof(x) ((x)->flags2 |= FLAGS2_IP_SPOOFING)
|
|
||||||
#define IsExtendChans(x) ((x)->flags2 & FLAGS2_EXTENDCHANS)
|
|
||||||
#define SetExtendChans(x) ((x)->flags2 |= FLAGS2_EXTENDCHANS)
|
|
||||||
|
|
||||||
/* for local users: flood grace period is over
|
/* for local users: flood grace period is over
|
||||||
* for servers: mentioned in networknotice.c notice
|
* for servers: mentioned in networknotice.c notice
|
||||||
|
|
|
@ -74,41 +74,41 @@ struct ConfItem
|
||||||
rb_patricia_node_t *pnode; /* Our patricia node */
|
rb_patricia_node_t *pnode; /* Our patricia node */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CONF_ILLEGAL 0x80000000
|
#define CONF_ILLEGAL 0x80000000
|
||||||
#define CONF_CLIENT 0x0002
|
#define CONF_CLIENT 0x0002
|
||||||
#define CONF_KILL 0x0040
|
#define CONF_KILL 0x0040
|
||||||
#define CONF_XLINE 0x0080
|
#define CONF_XLINE 0x0080
|
||||||
#define CONF_RESV_CHANNEL 0x0100
|
#define CONF_RESV_CHANNEL 0x0100
|
||||||
#define CONF_RESV_NICK 0x0200
|
#define CONF_RESV_NICK 0x0200
|
||||||
#define CONF_RESV (CONF_RESV_CHANNEL | CONF_RESV_NICK)
|
#define CONF_RESV (CONF_RESV_CHANNEL | CONF_RESV_NICK)
|
||||||
|
|
||||||
#define CONF_DLINE 0x20000
|
#define CONF_DLINE 0x020000
|
||||||
#define CONF_EXEMPTDLINE 0x100000
|
#define CONF_EXEMPTDLINE 0x100000
|
||||||
|
|
||||||
#define IsIllegal(x) ((x)->status & CONF_ILLEGAL)
|
#define IsIllegal(x) ((x)->status & CONF_ILLEGAL)
|
||||||
|
|
||||||
/* aConfItem->flags */
|
/* aConfItem->flags */
|
||||||
|
|
||||||
/* Generic flags... */
|
/* Generic flags... */
|
||||||
#define CONF_FLAGS_TEMPORARY 0x00800000
|
#define CONF_FLAGS_TEMPORARY 0x00800000
|
||||||
#define CONF_FLAGS_NEED_SSL 0x00000002
|
#define CONF_FLAGS_NEED_SSL 0x00000002
|
||||||
#define CONF_FLAGS_MYOPER 0x00080000 /* need to rewrite info.oper on burst */
|
#define CONF_FLAGS_MYOPER 0x00080000 /* need to rewrite info.oper on burst */
|
||||||
/* auth{} flags... */
|
/* auth{} flags... */
|
||||||
#define CONF_FLAGS_NO_TILDE 0x00000004
|
#define CONF_FLAGS_NO_TILDE 0x00000004
|
||||||
#define CONF_FLAGS_NEED_IDENTD 0x00000008
|
#define CONF_FLAGS_NEED_IDENTD 0x00000008
|
||||||
#define CONF_FLAGS_EXEMPTKLINE 0x00000040
|
#define CONF_FLAGS_EXEMPTKLINE 0x00000040
|
||||||
#define CONF_FLAGS_NOLIMIT 0x00000080
|
#define CONF_FLAGS_NOLIMIT 0x00000080
|
||||||
#define CONF_FLAGS_SPOOF_IP 0x00000200
|
#define CONF_FLAGS_SPOOF_IP 0x00000200
|
||||||
#define CONF_FLAGS_SPOOF_NOTICE 0x00000400
|
#define CONF_FLAGS_SPOOF_NOTICE 0x00000400
|
||||||
#define CONF_FLAGS_REDIR 0x00000800
|
#define CONF_FLAGS_REDIR 0x00000800
|
||||||
#define CONF_FLAGS_EXEMPTRESV 0x00002000 /* exempt from resvs */
|
#define CONF_FLAGS_EXEMPTRESV 0x00002000 /* exempt from resvs */
|
||||||
#define CONF_FLAGS_EXEMPTFLOOD 0x00004000
|
#define CONF_FLAGS_EXEMPTFLOOD 0x00004000
|
||||||
#define CONF_FLAGS_EXEMPTSPAMBOT 0x00008000
|
#define CONF_FLAGS_EXEMPTSPAMBOT 0x00008000
|
||||||
#define CONF_FLAGS_EXEMPTSHIDE 0x00010000
|
#define CONF_FLAGS_EXEMPTSHIDE 0x00010000
|
||||||
#define CONF_FLAGS_EXEMPTJUPE 0x00020000 /* exempt from resv generating warnings */
|
#define CONF_FLAGS_EXEMPTJUPE 0x00020000 /* exempt from resv generating warnings */
|
||||||
#define CONF_FLAGS_NEED_SASL 0x00040000
|
#define CONF_FLAGS_NEED_SASL 0x00040000
|
||||||
#define CONF_FLAGS_EXTEND_CHANS 0x00080000
|
#define CONF_FLAGS_EXTEND_CHANS 0x00080000
|
||||||
#define CONF_FLAGS_ENCRYPTED 0x00200000
|
#define CONF_FLAGS_ENCRYPTED 0x00200000
|
||||||
#define CONF_FLAGS_EXEMPTDNSBL 0x04000000
|
#define CONF_FLAGS_EXEMPTDNSBL 0x04000000
|
||||||
#define CONF_FLAGS_EXEMPTPROXY 0x08000000
|
#define CONF_FLAGS_EXEMPTPROXY 0x08000000
|
||||||
|
|
||||||
|
|
|
@ -138,11 +138,11 @@ extern void propagate_generic(struct Client *source_p, const char *command,
|
||||||
extern void cluster_generic(struct Client *, const char *, int cltype,
|
extern void cluster_generic(struct Client *, const char *, int cltype,
|
||||||
int cap, const char *format, ...);
|
int cap, const char *format, ...);
|
||||||
|
|
||||||
#define OPER_ENCRYPTED 0x00001
|
/* Other client flags are in client.h */
|
||||||
#define OPER_NEEDSSL 0x80000
|
#define OPER_ENCRYPTED 0x10000000
|
||||||
/* 0x400000 and above are in client.h */
|
#define OPER_NEEDSSL 0x20000000
|
||||||
|
|
||||||
#define OPER_FLAGS 0 /* no oper privs in Client.flags2/oper_conf.flags currently */
|
#define OPER_FLAGS 0 /* no oper privs in Client.flags/oper_conf.flags currently */
|
||||||
|
|
||||||
#define IsOperConfEncrypted(x) ((x)->flags & OPER_ENCRYPTED)
|
#define IsOperConfEncrypted(x) ((x)->flags & OPER_ENCRYPTED)
|
||||||
#define IsOperConfNeedSSL(x) ((x)->flags & OPER_NEEDSSL)
|
#define IsOperConfNeedSSL(x) ((x)->flags & OPER_NEEDSSL)
|
||||||
|
|
|
@ -1077,9 +1077,9 @@ free_exited_clients(void *unused)
|
||||||
{
|
{
|
||||||
s_assert(0);
|
s_assert(0);
|
||||||
sendto_realops_snomask(SNO_GENERAL, L_ALL,
|
sendto_realops_snomask(SNO_GENERAL, L_ALL,
|
||||||
"On abort_list: %s stat: %u flags: %u/%u handler: %c",
|
"On abort_list: %s stat: %u flags: %llu handler: %c",
|
||||||
target_p->name, (unsigned int) target_p->status,
|
target_p->name, (unsigned int) target_p->status,
|
||||||
target_p->flags, target_p->flags2, target_p->handler);
|
target_p->flags, target_p->handler);
|
||||||
sendto_realops_snomask(SNO_GENERAL, L_ALL,
|
sendto_realops_snomask(SNO_GENERAL, L_ALL,
|
||||||
"Please report this to the charybdis developers!");
|
"Please report this to the charybdis developers!");
|
||||||
found++;
|
found++;
|
||||||
|
@ -1221,9 +1221,9 @@ exit_aborted_clients(void *unused)
|
||||||
{
|
{
|
||||||
s_assert(0);
|
s_assert(0);
|
||||||
sendto_realops_snomask(SNO_GENERAL, L_ALL,
|
sendto_realops_snomask(SNO_GENERAL, L_ALL,
|
||||||
"On dead_list: %s stat: %u flags: %u/%u handler: %c",
|
"On dead_list: %s stat: %u flags: %llu handler: %c",
|
||||||
abt->client->name, (unsigned int) abt->client->status,
|
abt->client->name, (unsigned int) abt->client->status,
|
||||||
abt->client->flags, abt->client->flags2, abt->client->handler);
|
abt->client->flags, abt->client->handler);
|
||||||
sendto_realops_snomask(SNO_GENERAL, L_ALL,
|
sendto_realops_snomask(SNO_GENERAL, L_ALL,
|
||||||
"Please report this to the charybdis developers!");
|
"Please report this to the charybdis developers!");
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -1083,7 +1083,7 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
source_p->snomask = 0;
|
source_p->snomask = 0;
|
||||||
showsnomask = true;
|
showsnomask = true;
|
||||||
}
|
}
|
||||||
source_p->flags2 &= ~OPER_FLAGS;
|
source_p->flags &= ~OPER_FLAGS;
|
||||||
|
|
||||||
rb_free(source_p->localClient->opername);
|
rb_free(source_p->localClient->opername);
|
||||||
source_p->localClient->opername = NULL;
|
source_p->localClient->opername = NULL;
|
||||||
|
@ -1376,7 +1376,7 @@ oper_up(struct Client *source_p, struct oper_conf *oper_p)
|
||||||
SetExtendChans(source_p);
|
SetExtendChans(source_p);
|
||||||
SetExemptKline(source_p);
|
SetExemptKline(source_p);
|
||||||
|
|
||||||
source_p->flags2 |= oper_p->flags;
|
source_p->flags |= oper_p->flags;
|
||||||
source_p->localClient->opername = rb_strdup(oper_p->name);
|
source_p->localClient->opername = rb_strdup(oper_p->name);
|
||||||
source_p->localClient->privset = privilegeset_ref(oper_p->privset);
|
source_p->localClient->privset = privilegeset_ref(oper_p->privset);
|
||||||
|
|
||||||
|
|
|
@ -55,22 +55,26 @@ mapi_clist_av1 privs_clist[] = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/* XXX this is a copy, not so nice */
|
/* XXX this is a copy, not so nice
|
||||||
|
*
|
||||||
|
* Sort of... it's int in newconf.c since oper confs don't need 64-bit wide flags.
|
||||||
|
* --Elizafox
|
||||||
|
*/
|
||||||
struct mode_table
|
struct mode_table
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
unsigned int mode;
|
uint64_t mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* there is no such table like this anywhere else */
|
/* there is no such table like this anywhere else */
|
||||||
static struct mode_table auth_client_table[] = {
|
static struct mode_table auth_client_table[] = {
|
||||||
{"resv_exempt", FLAGS2_EXEMPTRESV },
|
{"resv_exempt", FLAGS_EXEMPTRESV },
|
||||||
{"kline_exempt", FLAGS2_EXEMPTKLINE },
|
{"kline_exempt", FLAGS_EXEMPTKLINE },
|
||||||
{"flood_exempt", FLAGS2_EXEMPTFLOOD },
|
{"flood_exempt", FLAGS_EXEMPTFLOOD },
|
||||||
{"spambot_exempt", FLAGS2_EXEMPTSPAMBOT },
|
{"spambot_exempt", FLAGS_EXEMPTSPAMBOT },
|
||||||
{"shide_exempt", FLAGS2_EXEMPTSHIDE },
|
{"shide_exempt", FLAGS_EXEMPTSHIDE },
|
||||||
{"jupe_exempt", FLAGS2_EXEMPTJUPE },
|
{"jupe_exempt", FLAGS_EXEMPTJUPE },
|
||||||
{"extend_chans", FLAGS2_EXTENDCHANS },
|
{"extend_chans", FLAGS_EXTENDCHANS },
|
||||||
{NULL, 0}
|
{NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -102,7 +106,7 @@ static void show_privs(struct Client *source_p, struct Client *target_p)
|
||||||
p = &auth_client_table[0];
|
p = &auth_client_table[0];
|
||||||
while (p->name != NULL)
|
while (p->name != NULL)
|
||||||
{
|
{
|
||||||
if (target_p->flags2 & p->mode)
|
if (target_p->flags & p->mode)
|
||||||
{
|
{
|
||||||
if (buf[0] != '\0')
|
if (buf[0] != '\0')
|
||||||
rb_strlcat(buf, " ", sizeof buf);
|
rb_strlcat(buf, " ", sizeof buf);
|
||||||
|
|
Loading…
Reference in a new issue