PRIV_UNLIMITED_TARGET, /**< unlimited target changes */
PRIV_UMODE_OVERRIDECC, /**< can set umode +c (override cmodes +cC) */
PRIV_NOAMSG_OVERRIDE, /**< can override the +M channelmode */
+ PRIV_SET_KEEPCONN, /**< can set KeepConn time by its own */
PRIV_LAST_PRIV /**< number of privileges */
};
FLAG_DEBUG, /**< send global debug/anti-hack info */
FLAG_ACCOUNT, /**< account name has been set */
FLAG_HIDDENHOST, /**< user's host is hidden */
+ FLAG_NOTCONN, /**< nobody is connected to this client */
FLAG_FAKEHOST, /**< user has a fakehost */
+ FLAG_FAKEIDENT, /**< user has a fakeident */
FLAG_NOCHAN, /**< hide user's channels for non-opers */
FLAG_NOIDLE, /**< hide user's idle time for non-opers */
FLAG_XTRAOP, /**< allow overriding +k */
FLAG_WEBIRC, /**< Is a WebIRC client with spoofed host/ip */
FLAG_SEE_IDLETIME, /**< Can see idletime of +I users. */
FLAG_SECURITY_SERV, /**< Securityflag, that can only be set by IAuth */
+ FLAG_KEEPCONN_ENABLED, /**< special KeepConn time is set */
FLAG_LAST_FLAG, /**< number of flags */
FLAG_LOCAL_UMODES = FLAG_LOCOP, /**< First local mode flag */
FLAG_GLOBAL_UMODES = FLAG_OPER /**< First global mode flag */
char cli_webirc[NICKLEN + 1]; /**< Contains the name of the WebIRC block */
char cli_yxx[4]; /**< Numeric Nick: YY if this is a
server, XXX if this is a user */
- unsigned int maxchans;
+ unsigned int maxchans : 8;
+ unsigned int keepconn : 24;
char cli_connclass[NICKLEN + 1];
time_t cli_firsttime; /**< time client was created */
time_t cli_lastnick; /**< TimeStamp on nick */
/** Return non-zero if the client caused a net.burst. */
#define IsJunction(x) HasFlag(x, FLAG_JUNCTION)
/** Return non-zero if the client has set mode +O (local operator) locally. */
-#define IsLocOp(x) (MyUser(x) && HasFlag(x, FLAG_LOCOP))
+#define IsLocOp(x) (MyConnect(x) && HasFlag(x, FLAG_LOCOP))
/** Return non-zero if the client has set mode +o (global operator). */
#define IsOper(x) HasFlag(x, FLAG_OPER)
/** Return non-zero if the client has an active UDP ping request. */
#define IsAccount(x) HasFlag(x, FLAG_ACCOUNT)
/** Return non-zero if the client has set mode +x (hidden host). */
#define IsHiddenHost(x) HasFlag(x, FLAG_HIDDENHOST)
+/** Return non-zero if nobody is connected to this client structure */
+#define IsNotConn(x) HasFlag(x, FLAG_NOTCONN)
/** Return non-zero if the client has an active PING request. */
#define IsPingSent(x) HasFlag(x, FLAG_PINGSENT)
/** Return non-zero if the client's channels are hidden. */
#define IsWebIRC(x) HasFlag(x, FLAG_WEBIRC)
/** Return non-zero if the client can see idletime of +I users. */
#define IsSeeIdletime(x) HasFlag(x, FLAG_SEE_IDLETIME)
-#define IsSecurityServ(x) HasFlag(x, FLAG_SECURITY_SERV)
+#define IsSecurityServ(x) HasFlag(x, FLAG_SECURITY_SERV)
+/** Return non-zero if the client has a special KeepConn Time set. */
+#define IsKeepConnEnabled(x) HasFlag(x, FLAG_KEEPCONN_ENABLED)
/** Return non-zero if the client has a fakehost. */
#define IsFakeHost(x) HasFlag(x, FLAG_FAKEHOST)
+#define IsFakeIdent(x) HasFlag(x, FLAG_FAKEIDENT)
/** Return non-zero if the client has operator or server privileges. */
#define IsPrivileged(x) (IsAnOper(x) || IsServer(x))
#define SetAccount(x) SetFlag(x, FLAG_ACCOUNT)
/** Mark a client as having mode +x (hidden host). */
#define SetHiddenHost(x) SetFlag(x, FLAG_HIDDENHOST)
+/** Mark a client as not having anyone connected to it */
+#define SetNotConn(x) SetFlag(x, FLAG_NOTCONN)
/** Mark a client as having a fakehost. */
#define SetFakeHost(x) SetFlag(x, FLAG_FAKEHOST)
+#define SetFakeIdent(x) SetFlag(x, FLAG_FAKEIDENT)
/** Mark a client as having a pending PING. */
#define SetPingSent(x) SetFlag(x, FLAG_PINGSENT)
/** Mark a client as having mode +n. */
/** Mark a client as being able to see idletime of +I users. */
#define SetSeeIdletime(x) SetFlag(x, FLAG_SEE_IDLETIME)
#define SetSecurityServ(x) SetFlag(x, FLAG_SECURITY_SERV)
+/** Mark a client as having a special KeepConn Time set. */
+#define SetKeepConnEnabled(x) SetFlag(x, FLAG_KEEPCONN_ENABLED)
/** Return non-zero if \a sptr sees \a acptr as an operator. */
#define SeeOper(sptr,acptr) ((IsAnOper(acptr) && \
#define ClearServNotice(x) ClrFlag(x, FLAG_SERVNOTICE)
/** Remove mode +x (hidden host) from the client. */
#define ClearHiddenHost(x) ClrFlag(x, FLAG_HIDDENHOST)
+/** Mark client as having someone connected to it */
+#define ClearNotConn(x) ClrFlag(x, FLAG_NOTCONN)
/** Remove fakehost flag from the flient. */
#define ClearFakeHost(x) ClrFlag(x, FLAG_FAKEHOST)
+#define ClearFakeIdent(x) ClrFlag(x, FLAG_FAKEIDENT)
/** Clear the client's pending PING flag. */
#define ClearPingSent(x) ClrFlag(x, FLAG_PINGSENT)
/** Clear the client's HUB flag. */
/** Make client no longer being able to see idletime of +I users. */
#define ClearSeeIdletime(x) ClrFlag(x, FLAG_SEE_IDLETIME)
#define ClearSecurityServ(x) ClrFlag(x, FLAG_SECURITY_SERV)
+/** Remove the client's mark of having a special KeepConn Time set. */
+#define ClearKeepConnEnabled(x) ClrFlag(x, FLAG_KEEPCONN_ENABLED)
/* free flags */
#define FREEFLAG_SOCKET 0x0001 /**< socket needs to be freed */