X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/eccd1c58d258a4201ea54cc4811c8b0387f7de05..07b7b659c16665ce33b058d1a06a7a420850ceb9:/include/channel.h diff --git a/include/channel.h b/include/channel.h index 1744acd..2573e19 100644 --- a/include/channel.h +++ b/include/channel.h @@ -72,6 +72,8 @@ struct Channel unsigned int join_count; /* joins within delta */ unsigned int join_delta; /* last ts of join */ + struct Dictionary *c_metadata; + unsigned long bants; time_t channelts; char *chname; @@ -90,6 +92,13 @@ struct membership unsigned long bants; }; +struct c_Metadata +{ + const char *name; + const char *value; + time_t timevalue; +}; + #define BANLEN 195 struct Ban { @@ -150,6 +159,7 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p, #define ONLY_SERVERS 0x0020 #define CHFL_HALFOP 0x0040 #define CHFL_OWNER 0x0080 +#define ONLY_OPERS 0x0100 #define ALL_MEMBERS CHFL_PEON #define ONLY_CHANOPS CHFL_CHANOP #define ONLY_CHANOPSVOICED (CHFL_CHANOP|CHFL_VOICE) @@ -183,6 +193,7 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p, #define MODE_NOCAPS 0x100000 /* Block messages in all capital letters */ #define MODE_NOREJOIN 0x200000 /* Block rejoin immediately after kick */ #define MODE_NOREPEAT 0x400000 /* Block repeat messages */ +#define MODE_NOOPERKICK 0x800000 /* disallow kicking opers */ #define CHFL_BAN 0x10000000 /* ban channel flag */ #define CHFL_EXCEPTION 0x20000000 /* exception to ban channel flag */ @@ -294,4 +305,15 @@ extern void user_join(struct Client * client_p, struct Client * source_p, const extern void do_join_0(struct Client *client_p, struct Client *source_p); extern int check_channel_name_loc(struct Client *source_p, const char *name); +extern struct Metadata *channel_metadata_add(struct Channel *target, const char *name, const char *value, int propegate); +extern void channel_metadata_delete(struct Channel *target, const char *name, int propegate); +extern struct Metadata *channel_metadata_find(struct Channel *target, const char *name); + +extern struct Metadata *channel_metadata_add(struct Channel *target, const char *name, const char *value, int propegate); +extern struct Metadata *channel_metadata_time_add(struct Channel *target, const char *name, time_t value); +extern void channel_metadata_delete(struct Channel *target, const char *name, int propegate); +extern struct Metadata *channel_metadata_find(struct Channel *target, const char *name); +extern void channel_metadata_clear(struct Channel *target); + + #endif /* INCLUDED_channel_h */