ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/include/client.h
(Generate patch)

Comparing ircd-hybrid/trunk/include/client.h (file contents):
Revision 5347 by michael, Sun Jan 11 12:42:20 2015 UTC vs.
Revision 6400 by michael, Sun Aug 23 16:32:56 2015 UTC

# Line 41 | Line 41 | struct MaskItem;
41   /*
42   * status macros.
43   */
44 < #define STAT_CONNECTING  0x00000001U
45 < #define STAT_HANDSHAKE   0x00000002U
46 < #define STAT_ME          0x00000004U
47 < #define STAT_UNKNOWN     0x00000008U
48 < #define STAT_SERVER      0x00000010U
49 < #define STAT_CLIENT      0x00000020U
50 <
51 < #define REG_NEED_USER    0x00000001U  /**< User must send USER command */
52 < #define REG_NEED_NICK    0x00000002U  /**< User must send NICK command */
53 < #define REG_NEED_CAP     0x00000004U  /**< In middle of CAP negotiations */
54 < #define REG_INIT  (REG_NEED_USER|REG_NEED_NICK)
44 > enum
45 > {
46 >  STAT_CONNECTING = 0x00000001U,
47 >  STAT_HANDSHAKE  = 0x00000002U,
48 >  STAT_ME         = 0x00000004U,
49 >  STAT_UNKNOWN    = 0x00000008U,
50 >  STAT_SERVER     = 0x00000010U,
51 >  STAT_CLIENT     = 0x00000020U
52 > };
53  
54 < #define ID_or_name(x,client_p)  ((IsCapable(client_p->from, CAP_TS6) && (x)->id[0]) ? (x)->id : (x)->name)
54 > enum
55 > {
56 >  REG_NEED_USER = 0x00000001U,  /**< User must send USER command */
57 >  REG_NEED_NICK = 0x00000002U,  /**< User must send NICK command */
58 >  REG_NEED_CAP  = 0x00000004U,  /**< In middle of CAP negotiations */
59 >  REG_INIT      = REG_NEED_USER | REG_NEED_NICK
60 > };
61 >
62 > #define ID_or_name(x,client_p)  ((IsServer(client_p->from) && (x)->id[0]) ? (x)->id : (x)->name)
63  
58 – #define IsRegistered(x)         ((x)->status  > STAT_UNKNOWN)
64   #define IsConnecting(x)         ((x)->status == STAT_CONNECTING)
65   #define IsHandshake(x)          ((x)->status == STAT_HANDSHAKE)
66   #define IsMe(x)                 ((x)->status == STAT_ME)
# Line 88 | Line 93 | struct MaskItem;
93   /*
94   * ts stuff
95   */
96 < #define TS_CURRENT      6  /**< Current TS protocol version */
97 < #define TS_MIN          6  /**< Minimum supported TS protocol version */
98 < #define TS_DOESTS       0x20000000
99 < #define DoesTS(x)       ((x)->tsinfo == TS_DOESTS)
100 <
96 <
96 > enum
97 > {
98 >  TS_CURRENT = 6,  /**< Current TS protocol version */
99 >  TS_MIN     = 6   /**< Minimum supported TS protocol version */
100 > };
101  
102 < #define CAP_MULTI_PREFIX  0x00000001U
103 < #define CAP_AWAY_NOTIFY   0x00000002U
104 < #define CAP_UHNAMES       0x00000004U
105 < #define CAP_EXTENDED_JOIN 0x00000008U
102 > enum
103 > {
104 >  CAP_MULTI_PREFIX   = 0x00000001U,
105 >  CAP_AWAY_NOTIFY    = 0x00000002U,
106 >  CAP_UHNAMES        = 0x00000004U,
107 >  CAP_EXTENDED_JOIN  = 0x00000008U,
108 >  CAP_ACCOUNT_NOTIFY = 0x00000010U
109 > };
110  
111   #define HasCap(x, y) ((x)->connection->cap_active & (y))
112  
113  
114   /* housekeeping flags */
115 < #define FLAGS_PINGSENT       0x00000001U  /**< Unreplied ping sent */
116 < #define FLAGS_DEADSOCKET     0x00000002U  /**< Local socket is dead--Exiting soon */
117 < #define FLAGS_KILLED         0x00000004U  /**< Prevents "QUIT" from being sent for this */
118 < #define FLAGS_CLOSING        0x00000008U  /**< Set when closing to suppress errors */
119 < #define FLAGS_GOTID          0x00000010U  /**< Successful ident lookup achieved */
120 < #define FLAGS_SENDQEX        0x00000020U  /**< Sendq exceeded */
121 < #define FLAGS_IPHASH         0x00000040U  /**< Iphashed this client */
122 < #define FLAGS_MARK           0x00000080U  /**< Marked client */
123 < #define FLAGS_CANFLOOD       0x00000100U  /**< Client has the ability to flood */
124 < #define FLAGS_EXEMPTGLINE    0x00000200U  /**< Client can't be G-lined */
125 < #define FLAGS_EXEMPTKLINE    0x00000400U  /**< Client is exempt from kline */
126 < #define FLAGS_NOLIMIT        0x00000800U  /**< Client is exempt from limits */
127 < #define FLAGS_PING_COOKIE    0x00001000U  /**< PING Cookie */
128 < #define FLAGS_FLOODDONE      0x00002000U  /**< Flood grace period has been ended. */
129 < #define FLAGS_EOB            0x00004000U  /**< Server has sent us an EOB */
130 < #define FLAGS_HIDDEN         0x00008000U  /**< A hidden server. Not shown in /links */
131 < #define FLAGS_BLOCKED        0x00010000U  /**< Must wait for COMM_SELECT_WRITE */
132 < #define FLAGS_USERHOST       0x00020000U  /**< Client is in userhost hash */
133 < #define FLAGS_BURSTED        0x00040000U  /**< User was already bursted */
134 < #define FLAGS_EXEMPTRESV     0x00080000U  /**< Client is exempt from RESV */
135 < #define FLAGS_GOTUSER        0x00100000U  /**< If we received a USER command */
136 < #define FLAGS_FINISHED_AUTH  0x00200000U  /**< Client has been released from auth */
137 < #define FLAGS_FLOOD_NOTICED  0x00400000U  /**< Notice to opers about this flooder has been sent */
138 < #define FLAGS_SERVICE        0x00800000U  /**< Client/server is a network service */
139 < #define FLAGS_SSL            0x01000000U  /**< User is connected via TLS/SSL */
140 < #define FLAGS_SQUIT          0x02000000U
115 > enum
116 > {
117 >  FLAGS_PINGSENT      = 0x00000001U,  /**< Unreplied ping sent */
118 >  FLAGS_DEADSOCKET    = 0x00000002U,  /**< Local socket is dead--Exiting soon */
119 >  FLAGS_KILLED        = 0x00000004U,  /**< Prevents "QUIT" from being sent for this */
120 >  FLAGS_CLOSING       = 0x00000008U,  /**< Set when closing to suppress errors */
121 >  FLAGS_GOTID         = 0x00000010U,  /**< Successful ident lookup achieved */
122 >  FLAGS_SENDQEX       = 0x00000020U,  /**< Sendq exceeded */
123 >  FLAGS_IPHASH        = 0x00000040U,  /**< Iphashed this client */
124 >  FLAGS_MARK          = 0x00000080U,  /**< Marked client */
125 >  FLAGS_CANFLOOD      = 0x00000100U,  /**< Client has the ability to flood */
126 >  FLAGS_EXEMPTKLINE   = 0x00000200U,  /**< Client is exempt from k-lines */
127 >  FLAGS_NOLIMIT       = 0x00000400U,  /**< Client is exempt from limits */
128 >  FLAGS_PING_COOKIE   = 0x00000800U,  /**< PING Cookie */
129 >  FLAGS_FLOODDONE     = 0x00001000U,  /**< Flood grace period has been ended. */
130 >  FLAGS_EOB           = 0x00002000U,  /**< Server has sent us an EOB */
131 >  FLAGS_HIDDEN        = 0x00004000U,  /**< A hidden server. Not shown in /links */
132 >  FLAGS_BLOCKED       = 0x00008000U,  /**< Must wait for COMM_SELECT_WRITE */
133 >  FLAGS_USERHOST      = 0x00010000U,  /**< Client is in userhost hash */
134 >  FLAGS_BURSTED       = 0x00020000U,  /**< User was already bursted */
135 >  FLAGS_EXEMPTRESV    = 0x00040000U,  /**< Client is exempt from RESV */
136 >  FLAGS_GOTUSER       = 0x00080000U,  /**< If we received a USER command */
137 >  FLAGS_FINISHED_AUTH = 0x00100000U,  /**< Client has been released from auth */
138 >  FLAGS_FLOOD_NOTICED = 0x00200000U,  /**< Notice to opers about this flooder has been sent */
139 >  FLAGS_SERVICE       = 0x00400000U,  /**< Client/server is a network service */
140 >  FLAGS_SSL           = 0x00800000U,  /**< User is connected via TLS/SSL */
141 >  FLAGS_SQUIT         = 0x01000000U,
142 >  FLAGS_EXEMPTXLINE   = 0x02000000U   /**< Client is exempt from x-lines */
143 > };
144  
145   #define HasFlag(x, y) ((x)->flags &   (y))
146   #define AddFlag(x, y) ((x)->flags |=  (y))
147   #define DelFlag(x, y) ((x)->flags &= ~(y))
148  
149  
139 –
150   /* umodes, settable flags */
151 < #define UMODE_SERVNOTICE   0x00000001U  /**< Server notices such as kill */
152 < #define UMODE_CCONN        0x00000002U  /**< Client Connections */
153 < #define UMODE_REJ          0x00000004U  /**< Bot Rejections */
154 < #define UMODE_SKILL        0x00000008U  /**< Server Killed */
155 < #define UMODE_FULL         0x00000010U  /**< Full messages */
156 < #define UMODE_SPY          0x00000020U  /**< See STATS / LINKS */
157 < #define UMODE_DEBUG        0x00000040U  /**< 'debugging' info */
158 < #define UMODE_NCHANGE      0x00000080U  /**< Nick change notice */
159 < #define UMODE_WALLOP       0x00000100U  /**< Send wallops to them */
160 < #define UMODE_INVISIBLE    0x00000200U  /**< Makes user invisible */
161 < #define UMODE_BOTS         0x00000400U  /**< Shows bots */
162 < #define UMODE_EXTERNAL     0x00000800U  /**< Show servers introduced and splitting */
163 < #define UMODE_CALLERID     0x00001000U  /**< Block unless caller id's */
164 < #define UMODE_SOFTCALLERID 0x00002000U  /**< Block unless on common channel */
165 < #define UMODE_UNAUTH       0x00004000U  /**< Show unauth connects here */
166 < #define UMODE_LOCOPS       0x00008000U  /**< Show locops */
167 < #define UMODE_DEAF         0x00010000U  /**< Don't receive channel messages */
168 < #define UMODE_REGISTERED   0x00020000U  /**< User has identified for that nick. */
169 < #define UMODE_REGONLY      0x00040000U  /**< Only registered nicks may PM */
170 < #define UMODE_HIDDEN       0x00080000U  /**< Operator status is hidden */
171 < #define UMODE_OPER         0x00100000U  /**< Operator */
172 < #define UMODE_ADMIN        0x00200000U  /**< Admin on server */
173 < #define UMODE_FARCONNECT   0x00400000U  /**< Can see remote client connects/exits */
174 < #define UMODE_HIDDENHOST   0x00800000U  /**< User's host is hidden */
175 < #define UMODE_SSL          0x01000000U  /**< User is connected via TLS/SSL */
176 < #define UMODE_WEBIRC       0x02000000U  /**< User connected via a webirc gateway */
177 < #define UMODE_HIDEIDLE     0x04000000U  /**< Hides idle and signon time in WHOIS */
178 < #define UMODE_HIDECHANS    0x08000000U  /**< Hides channel list in WHOIS */
179 <
180 < #define UMODE_ALL          UMODE_SERVNOTICE
151 > enum
152 > {
153 >  UMODE_SERVNOTICE   = 0x00000001U,  /**< Server notices such as kill */
154 >  UMODE_CCONN        = 0x00000002U,  /**< Can see client connection notices */
155 >  UMODE_REJ          = 0x00000004U,  /**< Bot Rejections */
156 >  UMODE_SKILL        = 0x00000008U,  /**< Server Killed */
157 >  UMODE_FULL         = 0x00000010U,  /**< Full messages */
158 >  UMODE_SPY          = 0x00000020U,  /**< See STATS / LINKS */
159 >  UMODE_DEBUG        = 0x00000040U,  /**< 'debugging' info */
160 >  UMODE_NCHANGE      = 0x00000080U,  /**< Nick change notice */
161 >  UMODE_WALLOP       = 0x00000100U,  /**< Send wallops to them */
162 >  UMODE_INVISIBLE    = 0x00000200U,  /**< Makes user invisible */
163 >  UMODE_BOTS         = 0x00000400U,  /**< Shows bots */
164 >  UMODE_EXTERNAL     = 0x00000800U,  /**< Show servers introduced and splitting */
165 >  UMODE_CALLERID     = 0x00001000U,  /**< Block unless caller id's */
166 >  UMODE_SOFTCALLERID = 0x00002000U,  /**< Block unless on common channel */
167 >  UMODE_UNAUTH       = 0x00004000U,  /**< Show unauth connects here */
168 >  UMODE_LOCOPS       = 0x00008000U,  /**< Can see LOCOPS messages */
169 >  UMODE_DEAF         = 0x00010000U,  /**< Don't receive channel messages */
170 >  UMODE_REGISTERED   = 0x00020000U,  /**< User has identified for that nick. */
171 >  UMODE_REGONLY      = 0x00040000U,  /**< Only registered nicks may PM */
172 >  UMODE_HIDDEN       = 0x00080000U,  /**< IRC operator status is hidden */
173 >  UMODE_OPER         = 0x00100000U,  /**< IRC operator */
174 >  UMODE_ADMIN        = 0x00200000U,  /**< Admin on server */
175 >  UMODE_FARCONNECT   = 0x00400000U,  /**< Can see remote client connects/exits */
176 >  UMODE_HIDDENHOST   = 0x00800000U,  /**< User's host is hidden */
177 >  UMODE_SSL          = 0x01000000U,  /**< User is connected via TLS/SSL */
178 >  UMODE_WEBIRC       = 0x02000000U,  /**< User connected via a webirc gateway */
179 >  UMODE_HIDEIDLE     = 0x04000000U,  /**< Hides idle and signon time in WHOIS */
180 >  UMODE_HIDECHANS    = 0x08000000U   /**< Hides channel list in WHOIS */
181 > };
182  
183   #define HasUMode(x, y) ((x)->umodes &   (y))
184   #define AddUMode(x, y) ((x)->umodes |=  (y))
# Line 175 | Line 186 | struct MaskItem;
186  
187  
188   /* oper priv flags */
189 < #define OPER_FLAG_KILL_REMOTE    0x00000001U  /**< Oper can KILL remote users */
190 < #define OPER_FLAG_KILL           0x00000002U  /**< Oper can KILL local users */
191 < #define OPER_FLAG_UNKLINE        0x00000004U  /**< Oper can use UNKLINE command */
192 < #define OPER_FLAG_GLINE          0x00000008U  /**< Oper can use GLINE command */
193 < #define OPER_FLAG_KLINE          0x00000010U  /**< Oper can use KLINE command */
194 < #define OPER_FLAG_XLINE          0x00000020U  /**< Oper can use XLINE command */
195 < #define OPER_FLAG_DIE            0x00000040U  /**< Oper can use DIE command */
196 < #define OPER_FLAG_REHASH         0x00000080U  /**< Oper can use REHASH command */
197 < #define OPER_FLAG_ADMIN          0x00000100U  /**< Oper can set user mode +a */
198 < #define OPER_FLAG_REMOTEBAN      0x00000200U  /**< Oper can set remote bans */
199 < #define OPER_FLAG_GLOBOPS        0x00000400U  /**< Oper can use GLOBOPS command */
200 < #define OPER_FLAG_MODULE         0x00000800U  /**< Oper can use MODULE command */
201 < #define OPER_FLAG_RESTART        0x00001000U  /**< Oper can use RESTART command */
202 < #define OPER_FLAG_DLINE          0x00002000U  /**< Oper can use DLINE command */
203 < #define OPER_FLAG_UNDLINE        0x00004000U  /**< Oper can use UNDLINE command */
204 < #define OPER_FLAG_SET            0x00008000U  /**< Oper can use SET command */
205 < #define OPER_FLAG_SQUIT          0x00010000U  /**< Oper can do local SQUIT */
206 < #define OPER_FLAG_SQUIT_REMOTE   0x00020000U  /**< Oper can do remote SQUIT */
207 < #define OPER_FLAG_CONNECT        0x00040000U  /**< Oper can do local CONNECT */
208 < #define OPER_FLAG_CONNECT_REMOTE 0x00080000U  /**< Oper can do remote CONNECT */
209 < #define OPER_FLAG_WALLOPS        0x00100000U  /**< Oper can use WALLOPS command */
210 < #define OPER_FLAG_LOCOPS         0x00200000U  /**< Oper can use LOCOPS command */
211 < #define OPER_FLAG_UNXLINE        0x00400000U  /**< Oper can use UNXLINE command */
212 < #define OPER_FLAG_OPME           0x00800000U  /**< Oper can use OPME command */
213 <
189 > enum
190 > {
191 > OPER_FLAG_KILL_REMOTE    = 0x00000001U,  /**< Oper can KILL remote users */
192 > OPER_FLAG_KILL           = 0x00000002U,  /**< Oper can KILL local users */
193 > OPER_FLAG_UNKLINE        = 0x00000004U,  /**< Oper can use UNKLINE command */
194 > OPER_FLAG_KLINE          = 0x00000008U,  /**< Oper can use KLINE command */
195 > OPER_FLAG_XLINE          = 0x00000010U,  /**< Oper can use XLINE command */
196 > OPER_FLAG_DIE            = 0x00000020U,  /**< Oper can use DIE command */
197 > OPER_FLAG_REHASH         = 0x00000040U,  /**< Oper can use REHASH command */
198 > OPER_FLAG_ADMIN          = 0x00000080U,  /**< Oper can set user mode +a */
199 > OPER_FLAG_REMOTEBAN      = 0x00000100U,  /**< Oper can set remote bans */
200 > OPER_FLAG_GLOBOPS        = 0x00000200U,  /**< Oper can use GLOBOPS command */
201 > OPER_FLAG_MODULE         = 0x00000400U,  /**< Oper can use MODULE command */
202 > OPER_FLAG_RESTART        = 0x00000800U,  /**< Oper can use RESTART command */
203 > OPER_FLAG_DLINE          = 0x00001000U,  /**< Oper can use DLINE command */
204 > OPER_FLAG_UNDLINE        = 0x00002000U,  /**< Oper can use UNDLINE command */
205 > OPER_FLAG_SET            = 0x00004000U,  /**< Oper can use SET command */
206 > OPER_FLAG_SQUIT          = 0x00008000U,  /**< Oper can do local SQUIT */
207 > OPER_FLAG_SQUIT_REMOTE   = 0x00010000U,  /**< Oper can do remote SQUIT */
208 > OPER_FLAG_CONNECT        = 0x00020000U,  /**< Oper can do local CONNECT */
209 > OPER_FLAG_CONNECT_REMOTE = 0x00040000U,  /**< Oper can do remote CONNECT */
210 > OPER_FLAG_WALLOPS        = 0x00080000U,  /**< Oper can use WALLOPS command */
211 > OPER_FLAG_LOCOPS         = 0x00100000U,  /**< Oper can use LOCOPS command */
212 > OPER_FLAG_UNXLINE        = 0x00200000U,  /**< Oper can use UNXLINE command */
213 > OPER_FLAG_OPME           = 0x00400000U   /**< Oper can use OPME command */
214 > };
215  
216   #define HasOFlag(x, y) (MyConnect(x) ? (x)->connection->operflags & (y) : 0)
217   #define AddOFlag(x, y) ((x)->connection->operflags |=  (y))
# Line 214 | Line 226 | struct MaskItem;
226   #define SetDead(x)              ((x)->flags |= FLAGS_DEADSOCKET)
227   #define IsClosing(x)            ((x)->flags & FLAGS_CLOSING)
228   #define SetClosing(x)           ((x)->flags |= FLAGS_CLOSING)
217 – #define SetCanFlood(x)          ((x)->flags |= FLAGS_CANFLOOD)
218 – #define IsCanFlood(x)           ((x)->flags & FLAGS_CANFLOOD)
229   #define IsDefunct(x)            ((x)->flags & (FLAGS_DEADSOCKET|FLAGS_CLOSING|FLAGS_KILLED))
230  
231   /* oper flags */
# Line 228 | Line 238 | struct MaskItem;
238                                   if (!HasUMode(x, UMODE_OPER) && !IsServer((x))) \
239                                    (x)->handler = CLIENT_HANDLER; }
240  
231 – #define SetSendQExceeded(x)     ((x)->flags |= FLAGS_SENDQEX)
232 – #define IsSendQExceeded(x)      ((x)->flags &  FLAGS_SENDQEX)
233 –
234 – #define SetUserHost(x)          ((x)->flags |= FLAGS_USERHOST)
235 – #define IsUserHostIp(x)         ((x)->flags & FLAGS_USERHOST)
236 –
237 – #define SetPingSent(x)          ((x)->flags |= FLAGS_PINGSENT)
238 – #define IsPingSent(x)           ((x)->flags & FLAGS_PINGSENT)
239 – #define ClearPingSent(x)        ((x)->flags &= ~FLAGS_PINGSENT)
240 –
241 – #define SetGotId(x)             ((x)->flags |= FLAGS_GOTID)
242 – #define IsGotId(x)              ((x)->flags & FLAGS_GOTID)
243 –
244 – #define IsExemptKline(x)        ((x)->flags & FLAGS_EXEMPTKLINE)
245 – #define SetExemptKline(x)       ((x)->flags |= FLAGS_EXEMPTKLINE)
246 – #define IsExemptLimits(x)       ((x)->flags & FLAGS_NOLIMIT)
247 – #define SetExemptLimits(x)      ((x)->flags |= FLAGS_NOLIMIT)
248 – #define IsExemptGline(x)        ((x)->flags & FLAGS_EXEMPTGLINE)
249 – #define SetExemptGline(x)       ((x)->flags |= FLAGS_EXEMPTGLINE)
250 – #define IsExemptResv(x)         ((x)->flags & FLAGS_EXEMPTRESV)
251 – #define SetExemptResv(x)        ((x)->flags |= FLAGS_EXEMPTRESV)
252 –
241   #define IsFloodDone(x)          ((x)->flags &  FLAGS_FLOODDONE)
254 – #define SetFloodDone(x)         ((x)->flags |= FLAGS_FLOODDONE)
255 – #define HasPingCookie(x)        ((x)->flags & FLAGS_PING_COOKIE)
256 – #define SetPingCookie(x)        ((x)->flags |= FLAGS_PING_COOKIE)
242   #define IsHidden(x)             ((x)->flags &  FLAGS_HIDDEN)
258 – #define SetHidden(x)            ((x)->flags |= FLAGS_HIDDEN)
243  
244  
245   /*! \brief addr_mask_type enumeration */
# Line 266 | Line 250 | enum addr_mask_type
250    MASK_IP  /**< IP is masked. 255.255.255.255 is shown instead */
251   };
252  
253 + struct ServicesTag
254 + {
255 +  dlink_node node;
256 +  char *tag;
257 +  unsigned int numeric;
258 +  unsigned int umodes;
259 + };
260 +
261   /*! \brief Server structure */
262   struct Server
263   {
# Line 277 | Line 269 | struct Server
269   /*! \brief ListTask structure */
270   struct ListTask
271   {
272 +  dlink_node node;  /**< Embedded list node used to link into listing_client_list */
273    dlink_list show_mask; /**< Channels to show */
274    dlink_list hide_mask; /**< Channels to hide */
275  
# Line 389 | Line 382 | struct Client
382  
383    dlink_list        whowas;
384    dlink_list        channel;   /**< Chain of channel pointer blocks */
385 +  dlink_list        svstags;   /**< List of ServicesTag items */
386  
387    char away[AWAYLEN + 1]; /**< Client's AWAY message. Can be set/unset via AWAY command */
388    char name[HOSTLEN + 1]; /**< Unique name for a client nick or host */
389    char id[IDLEN + 1];       /**< Client ID, unique ID per client */
390 <  char account[SVIDLEN + 1]; /**< Services account */
390 >  char account[ACCOUNTLEN + 1]; /**< Services account */
391  
392    /*
393     * client->username is the username from ident or the USER message,
# Line 439 | Line 433 | extern dlink_list unknown_list;       /*
433   extern dlink_list oper_list;          /* our opers, duplicated in local_client_list */
434  
435   extern int accept_message(struct Client *, struct Client *);
436 < extern unsigned int idle_time_get(const struct Client *, const struct Client *);
436 > extern unsigned int client_get_idle_time(const struct Client *, const struct Client *);
437   extern struct split_nuh_item *find_accept(const char *, const char *,
438                                            const char *, struct Client *,
439                                            int (*)(const char *, const char *));
440 + extern void client_attach_svstag(struct Client *, unsigned int, const char *, const char *const);
441 + extern void client_clear_svstags(struct Client *);
442   extern void del_accept(struct split_nuh_item *, struct Client *);
443   extern void del_all_accepts(struct Client *);
444   extern void exit_client(struct Client *, const char *);

Diff Legend

– Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)