rb_dlink_list members; /* channel members */
rb_dlink_list locmembers; /* local channel members */
-rb_dlink_list invites;
+ rb_dlink_list invites;
rb_dlink_list banlist;
rb_dlink_list exceptlist;
rb_dlink_list invexlist;
char *banstr;
char *who;
time_t when;
+ char *forward;
rb_dlink_node node;
};
struct Channel *allocate_channel(const char *chname);
void free_channel(struct Channel *chptr);
-struct Ban *allocate_ban(const char *, const char *);
+struct Ban *allocate_ban(const char *, const char *, const char *);
void free_ban(struct Ban *bptr);
extern int flood_attack_channel(int p_or_n, struct Client *source_p,
struct Channel *chptr, char *chname);
extern int is_banned(struct Channel *chptr, struct Client *who,
- struct membership *msptr, const char *, const char *);
+ struct membership *msptr, const char *, const char *, const char **);
extern int is_quieted(struct Channel *chptr, struct Client *who,
struct membership *msptr, const char *, const char *);
-extern int can_join(struct Client *source_p, struct Channel *chptr, char *key);
+extern int can_join(struct Client *source_p, struct Channel *chptr, char *key,
+ char **forward);
extern struct membership *find_channel_membership(struct Channel *, struct Client *);
extern const char *find_channel_status(struct membership *msptr, int combine);
extern struct ChannelMode chmode_table[256];
extern int add_id(struct Client *source_p, struct Channel *chptr, const char *banid,
- rb_dlink_list * list, long mode_type);
+ const char *forward, rb_dlink_list * list, long mode_type);
-extern int del_id(struct Channel *chptr, const char *banid, rb_dlink_list * list, long mode_type);
+extern struct Ban * del_id(struct Channel *chptr, const char *banid, rb_dlink_list * list,
+ long mode_type);
extern ExtbanFunc extban_table[256];
extern int get_channel_access(struct Client *source_p, struct membership *msptr);
+extern void send_channel_join(struct Channel *chptr, struct Client *client_p);
+
#endif /* INCLUDED_channel_h */