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);
int ChannelBanExists(struct chanNode *channel, const char *ban);
int ChannelExemptExists(struct chanNode *channel, const char *exempt);
-typedef int (*topic_func_t)(struct userNode *who, struct chanNode *chan, const char *old_topic);
-void reg_topic_func(topic_func_t handler);
+typedef int (*topic_func_t)(struct userNode *who, struct chanNode *chan, const char *old_topic, void *extra);
+void reg_topic_func(topic_func_t handler, void *extra);
void SetChannelTopic(struct chanNode *channel, struct userNode *service, struct userNode *user, const char *topic, int announce);
struct userNode *IsInChannel(struct chanNode *channel, struct userNode *user);