#define UMODE_REGPRIV 0x0800
#define UMODE_HIDEIDLE 0x1000
#define UMODE_PARANOID 0x2000
+#define UMODE_CLOAKED 0x4000
-#define UMODE_ALL 0x3FFF
+#define UMODE_ALL 0x7FFF
#define AFLAG_STAFF 0x0001
#define AFLAG_SUPPORT 0x0002
#define IsRegPriv(x) ((x)->umodes & UMODE_REGPRIV)
#define IsHideIdle(x) ((x)->umodes & UMODE_HIDEIDLE)
#define IsParanoid(x) ((x)->umodes & UMODE_PARANOID)
+#define IsCloaked(x) ((x)->umodes & UMODE_CLOAKED)
#define SetInvisible(x) ((x)->umodes |= UMODE_INV)
#define SetWallops(x) ((x)->umodes |= UMODE_WALLOPS)
#define SetRegPriv(x) ((x)->umodes |= UMODE_REGPRIV)
#define SetHideIdle(x) ((x)->umodes |= UMODE_HIDEIDLE)
#define SetParanoid(x) ((x)->umodes |= UMODE_PARANOID)
+#define SetCloaked(x) ((x)->umodes |= UMODE_CLOAKED)
#define ClearInvisible(x) ((x)->umodes &= ~UMODE_INV)
#define ClearWallops(x) ((x)->umodes &= ~UMODE_WALLOPS)
#define ClearRegPriv(x) ((x)->umodes &= ~UMODE_REGPRIV)
#define ClearHideIdle(x) ((x)->umodes &= ~UMODE_HIDEIDLE)
#define ClearParanoid(x) ((x)->umodes &= ~UMODE_PARANOID)
+#define ClearCloaked(x) ((x)->umodes &= ~UMODE_CLOAKED)
#define IsStaff(x) ((x)->flags & AFLAG_STAFF)
#define IsDeveloper(x) ((x)->flags & AFLAG_DEVELOPER)
sstring *away;
struct irc_in_addr ipaddress;
patricia_node_t *ipnode;
+ unsigned int cloak_count;
+ struct nick *cloak_extra;
unsigned int marker;
struct nick *next;
struct nick *nextbyhost;
void *exts[MAXNICKEXTS];
} nick;
-#define p_ipaddr ipaddress
-#define p_nodeaddr ipnode->prefix->sin
-
#define NICKHASHSIZE 60000
#define HOSTHASHSIZE 40000
#define REALNAMEHASHSIZE 40000
(((*gethandlebynumeric(x))->numeric==(x&MAXNUMERIC))?(*gethandlebynumeric(x)):NULL)))
/* nickalloc.c functions */
-void initnickalloc();
realname *newrealname();
void freerealname(realname *rn);
nick *newnick();
-void freenick (nick *np);
+void freenick(nick *np);
host *newhost();
-void freehost (host *hp);
+void freehost(host *hp);
/* nick.c functions */
void handleserverchange(int hooknum, void *arg);
void releasenickext(int index);
char *visiblehostmask(nick *np, char *buf);
char *visibleuserhost(nick *np, char *buf);
+int canseeuser(nick *np, nick *cloaked);
+void addcloaktarget(nick *cloaked, nick *target);
+void removecloaktarget(nick *target);
+void clearcloaktargets(nick *cloaked);
/* nickhandlers.c functions */
int handlenickmsg(void *source, int cargc, char **cargv);
int handleaccountmsg(void *source, int cargc, char **cargv);
int handleprivmsg(void *source, int cargc, char **cargv);
int handleawaymsg(void *source, int cargc, char **cargv);
+int handleaddcloak(void *source, int cargc, char **cargv);
+int handleclearcloak(void *source, int cargc, char **cargv);
/* These functions have been replaced by macros
nick **gethandlebynumeric(long numeric);