char *mark; /* only filled if they are marked */
char *version_reply; /* only filled in if a version query was triggered */
+ char *sslfp; /* only filled in if a mark SSLCLIFP is received */
time_t timestamp; /* Time of last nick change */
time_t idle_since;
void assign_fakehost(struct userNode *user, const char *host, int announce);
void set_geoip_info(struct userNode *user);
-typedef void (*new_channel_func_t) (struct chanNode *chan);
-void reg_new_channel_func(new_channel_func_t handler);
+typedef void (*new_channel_func_t) (struct chanNode *chan, void *extra);
+void reg_new_channel_func(new_channel_func_t handler, void *extra);
typedef int (*join_func_t) (struct modeNode *mNode, void *extra);
void reg_join_func(join_func_t handler, void *extra);
-typedef void (*del_channel_func_t) (struct chanNode *chan);
-void reg_del_channel_func(del_channel_func_t handler);
+typedef void (*del_channel_func_t) (struct chanNode *chan, void *extra);
+void reg_del_channel_func(del_channel_func_t handler, void *extra);
struct chanNode* AddChannel(const char *name, time_t time_, const char *modes, char *banlist, char *exemptlist);
void LockChannel(struct chanNode *channel);
struct modeNode* AddChannelUser(struct userNode* user, struct chanNode* channel);
-typedef void (*part_func_t) (struct modeNode *mn, const char *reason);
-void reg_part_func(part_func_t handler);
-void unreg_part_func(part_func_t handler);
+typedef void (*part_func_t) (struct modeNode *mn, const char *reason, void *extra);
+void reg_part_func(part_func_t handler, void *extra);
+void unreg_part_func(part_func_t handler, void *extra);
void DelChannelUser(struct userNode* user, struct chanNode* channel, const char *reason, int deleting);
void KickChannelUser(struct userNode* target, struct chanNode* channel, struct userNode *kicker, const char *why);
-typedef void (*kick_func_t) (struct userNode *kicker, struct userNode *user, struct chanNode *chan);
-void reg_kick_func(kick_func_t handler);
+typedef void (*kick_func_t) (struct userNode *kicker, struct userNode *user, struct chanNode *chan, void *extra);
+void reg_kick_func(kick_func_t handler, void *extra);
void ChannelUserKicked(struct userNode* kicker, struct userNode* victim, struct chanNode* channel);
int ChannelBanExists(struct chanNode *channel, const char *ban);