Support ircu's XQUERY and XRESPONSE.
[srvx.git] / src / hash.h
index e02e0aeeb1860e5d5058a913cb25b666174b1efd..8d3cb211914f21180b0c8a93a9672245bc260e5e 100644 (file)
@@ -79,6 +79,7 @@
 #define IsDummy(x)              ((x)->modes & FLAGS_DUMMY)
 #define IsNoIdle(x)             ((x)->modes & FLAGS_NOIDLE)
 #define IsFakeHost(x)           ((x)->fakehost[0] != '\0')
+#define IsFakeIdent(x)          ((x)->fakeident[0] != '\0')
 #define IsLocal(x)              ((x)->uplink == self)
 
 #define NICKLEN         30
@@ -107,6 +108,7 @@ struct userNode {
     char info[REALLEN + 1];       /* Free form additional client information */
     char hostname[HOSTLEN + 1];   /* DNS name or IP address */
     char fakehost[HOSTLEN + 1];   /* Assigned fake host */
+    char fakeident[USERLEN + 1];  /* Assigned fake ident */
 #ifdef WITH_PROTOCOL_P10
     char numeric[COMBO_NUMERIC_LEN+1];
     unsigned int num_local : 18;
@@ -170,7 +172,7 @@ struct modeNode {
 struct server {
     char name[SERVERNAMEMAX+1];
     unsigned long boot;
-    unsigned long link;
+    unsigned long link_time;
     char description[SERVERDESCRIPTMAX+1];
 #ifdef WITH_PROTOCOL_P10
     char numeric[COMBO_NUMERIC_LEN+1];
@@ -205,7 +207,7 @@ int userList_contains(struct userList *list, struct userNode *user);
 typedef void (*server_link_func_t) (struct server *server);
 void reg_server_link_func(server_link_func_t handler);
 
-typedef int (*new_user_func_t) (struct userNode *user);
+typedef void (*new_user_func_t) (struct userNode *user);
 void reg_new_user_func(new_user_func_t handler);
 typedef void (*del_user_func_t) (struct userNode *user, struct userNode *killer, const char *why);
 void reg_del_user_func(del_user_func_t handler);
@@ -215,11 +217,11 @@ typedef void (*nick_change_func_t)(struct userNode *user, const char *old_nick);
 void reg_nick_change_func(nick_change_func_t handler);
 void NickChange(struct userNode* user, const char *new_nick, int no_announce);
 
-typedef void (*account_func_t) (struct userNode *user, const char *stamp);
+typedef void (*account_func_t) (struct userNode *user, const char *stamp, unsigned long timestamp, unsigned long serial);
 void reg_account_func(account_func_t handler);
-void call_account_func(struct userNode *user, const char *stamp);
-void StampUser(struct userNode *user, const char *stamp);
-void assign_fakehost(struct userNode *user, const char *host, int announce);
+void call_account_func(struct userNode *user, const char *stamp, unsigned long timestamp, unsigned long serial);
+void StampUser(struct userNode *user, const char *stamp, unsigned long timestamp, unsigned long serial);
+void assign_fakehost(struct userNode *user, const char *host, const char *ident, int force, int announce);
 
 typedef void (*new_channel_func_t) (struct chanNode *chan);
 void reg_new_channel_func(new_channel_func_t handler);
@@ -234,6 +236,7 @@ void UnlockChannel(struct chanNode *channel);
 
 struct modeNode* AddChannelUser(struct userNode* user, struct chanNode* channel);
 
+int modeNode_sort(const void *pa, const void *pb);
 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);