Separate notion of _FLOOD constant from the flags stored in the Flooding struct

This adds a FLOOD_FLAG() macro to convert a _FLOOD constant to the appropriate flag.  For now this just
casts the argument to unsigned int.

Rename Flooding.type to Flooding.flags and change it to unsigned int, to reflect that it's a bitfield of
flags for multiple flooding types.
This commit is contained in:
Kevin Easton
2017-01-18 17:03:06 +11:00
parent 78dbdea441
commit fef98f43ba
3 changed files with 6 additions and 4 deletions

View File

@@ -26,6 +26,8 @@ void clean_flood_list(void);
#define KICK_FLOOD 0x0800 #define KICK_FLOOD 0x0800
#define JOIN_FLOOD 0x1000 #define JOIN_FLOOD 0x1000
#define FLOOD_FLAG(t) ((unsigned)(t))
#include "hash.h" #include "hash.h"
#define FLOOD_HASHSIZE 31 #define FLOOD_HASHSIZE 31
extern HashEntry no_flood_list[FLOOD_HASHSIZE]; extern HashEntry no_flood_list[FLOOD_HASHSIZE];

View File

@@ -1012,7 +1012,7 @@ typedef struct flood_stru
char *name; char *name;
char *host; char *host;
char *channel; char *channel;
int type; unsigned flags;
char flood; char flood;
unsigned long cnt; unsigned long cnt;
struct timeval start; struct timeval start;

View File

@@ -401,15 +401,15 @@ int BX_check_flooding(char *nick, int type, char *line, char *channel)
{ {
remove_oldest_flood_hashlist(&flood_list[0]); remove_oldest_flood_hashlist(&flood_list[0]);
tmp = add_name_to_floodlist(nick, FromUserHost, channel, flood_list, FLOOD_HASHSIZE); tmp = add_name_to_floodlist(nick, FromUserHost, channel, flood_list, FLOOD_HASHSIZE);
tmp->type = type; tmp->flags = FLOOD_FLAG(type);
tmp->cnt = 1; tmp->cnt = 1;
get_time(&tmp->start); get_time(&tmp->start);
tmp->flood = 0; tmp->flood = 0;
return 1; return 1;
} }
if (!(tmp->type & type)) if (!(tmp->flags & FLOOD_FLAG(type)))
{ {
tmp->type |= type; tmp->flags |= FLOOD_FLAG(type);
return 1; return 1;
} }