#define HI_FLAG_NETWORK_HELPER 0x00000100
#define HI_FLAG_BOT 0x00000200
#define HI_FLAG_AUTOHIDE 0x00000400
#define HI_FLAG_NETWORK_HELPER 0x00000100
#define HI_FLAG_BOT 0x00000200
#define HI_FLAG_AUTOHIDE 0x00000400
#define IsHelping(user) (user->handle_info && HANDLE_FLAGGED(user->handle_info, HELPING))
#define IsStaff(user) (IsOper(user) || IsSupportHelper(user) || IsNetworkHelper(user))
#define IsBot(user) (user->handle_info && HANDLE_FLAGGED(user->handle_info, BOT))
#define IsHelping(user) (user->handle_info && HANDLE_FLAGGED(user->handle_info, HELPING))
#define IsStaff(user) (IsOper(user) || IsSupportHelper(user) || IsNetworkHelper(user))
#define IsBot(user) (user->handle_info && HANDLE_FLAGGED(user->handle_info, BOT))
struct handle_cookie *cookie;
struct handle_note *notes;
struct language *language;
struct handle_cookie *cookie;
struct handle_note *notes;
struct language *language;
unsigned short screen_width;
unsigned short table_width;
unsigned char userlist_style;
unsigned short screen_width;
unsigned short table_width;
unsigned char userlist_style;
struct modeNode *find_handle_in_channel(struct chanNode *channel, struct handle_info *handle, struct userNode *except);
int nickserv_modify_handle_flags(struct userNode *user, struct userNode *bot, const char *str, unsigned long *add, unsigned long *remove);
int oper_has_access(struct userNode *user, struct userNode *bot, unsigned int min_level, unsigned int quiet);
struct modeNode *find_handle_in_channel(struct chanNode *channel, struct handle_info *handle, struct userNode *except);
int nickserv_modify_handle_flags(struct userNode *user, struct userNode *bot, const char *str, unsigned long *add, unsigned long *remove);
int oper_has_access(struct userNode *user, struct userNode *bot, unsigned int min_level, unsigned int quiet);
-struct handle_info *checklogin(const char *user, const char *pass, const char *numeric, const char *hostmask);
+struct handle_info *checklogin(const char *user, const char *pass, const char *numeric, const char *hostmask, const char *ipmask);
char *getfakehost(const char *user);
void nickserv_devnull_delete(char *name);
void nickserv_devnull_rename(char *oldname, char *newname);
char *getfakehost(const char *user);
void nickserv_devnull_delete(char *name);
void nickserv_devnull_rename(char *oldname, char *newname);
+char *generate_fakehost(struct handle_info *handle);
+char *generate_fakeident(struct handle_info *handle, struct userNode *user);
+void apply_fakehost(struct handle_info *handle, struct userNode *user);
/* auth_funcs are called when a user gets a new handle_info. They are
* called *after* user->handle_info has been updated. */
/* auth_funcs are called when a user gets a new handle_info. They are
* called *after* user->handle_info has been updated. */