#define MODE_HIDEMODE 0x02000000 /* +L hide modes */
#define MODE_APASS 0x04000000 /* +A adminpass */
#define MODE_UPASS 0x08000000 /* +U userpass */
+#define MODE_ADMINSONLY 0x10000000 /* +a Admins only */
#define MODE_REMOVE 0x80000000
#define FLAGS_OPER 0x000001 /* Operator +O */
#define FLAGS_LOCOP 0x000002 /* Local operator +o */
#define FLAGS_INVISIBLE 0x000004 /* invisible +i */
#define FLAGS_WALLOP 0x000008 /* receives wallops +w */
-#define FLAGS_SERVNOTICE 0x000010 /* receives server notices +s */
+#define FLAGS_DUMMY 0x000010 /* user is not announced to other servers */
#define FLAGS_DEAF 0x000020 /* deaf +d */
#define FLAGS_SERVICE 0x000040 /* cannot be kicked, killed or deoped +k */
#define FLAGS_GLOBAL 0x000080 /* receives global messages +g */
#define IsInvisible(x) ((x)->modes & FLAGS_INVISIBLE)
#define IsGlobal(x) ((x)->modes & FLAGS_GLOBAL)
#define IsWallOp(x) ((x)->modes & FLAGS_WALLOP)
-#define IsServNotice(x) ((x)->modes & FLAGS_SERVNOTICE)
#define IsBotM(x) ((x)->modes & FLAGS_BOT)
#define IsHideChans(x) ((x)->modes & FLAGS_HIDECHANS)
#define IsHideIdle(x) ((x)->modes & FLAGS_HIDEIDLE)
#define IsHiddenHost(x) ((x)->modes & FLAGS_HIDDEN_HOST)
#define IsReggedNick(x) ((x)->modes & FLAGS_REGNICK)
#define IsRegistering(x) ((x)->modes & FLAGS_REGISTERING)
+#define IsDummy(x) ((x)->modes & FLAGS_DUMMY)
#define IsFakeHost(x) ((x)->fakehost[0] != '\0')
#define IsLocal(x) ((x)->uplink == self)
PRIV_FORCE_LOCAL_OPMODE, /**< can hack modes on quarantined local channels */
PRIV_CHECK, /**< oper can use CHECK */
PRIV_SEE_SECRET_CHAN, /**< oper can see +s channels in whois */
+ PRIV_WHOIS_NOTICE, /**< oper can set/unset user mode +W */
+ PRIV_HIDE_IDLE, /**< oper can set/unset user mode +I */
+ PRIV_XTRAOP, /**< oper can set/unset user mode +X */
+ PRIV_HIDE_CHANNELS, /**< oper can set/unset user mode +n */
PRIV_LAST_PRIV /**< number of privileges */
};
char *version_reply; /* only filled in if a version query was triggered */
time_t timestamp; /* Time of last nick change */
+ time_t idle_since;
struct server *uplink; /* Server that user is connected to */
struct modeList channels; /* Vector of channels user is in */
struct Privs privs;
struct server {
char name[SERVERNAMEMAX+1];
time_t boot;
- time_t link;
+ time_t link_time;
char description[SERVERDESCRIPTMAX+1];
#ifdef WITH_PROTOCOL_P10
char numeric[COMBO_NUMERIC_LEN+1];
struct userNode* GetUserH(const char *nick); /* using nick */
struct chanNode* GetChannel(const char *name);
struct modeNode* GetUserMode(struct chanNode* channel, struct userNode* user);
+int userList_contains(struct userList *list, struct userNode *user);
+unsigned int IsUserP(struct userNode *user);
-typedef void (*server_link_func_t) (struct server *server);
+typedef int (*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);