Author: Kev <klmitch@mit.edu>
[ircu2.10.12-pk.git] / include / numeric.h
1 /*
2  * IRC - Internet Relay Chat, include/numeric.h
3  * Copyright (C) 1990 Jarkko Oikarinen
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 1, or (at your option)
8  * any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  *
19  * $Id$
20  */
21 #ifndef INCLUDED_numeric_h
22 #define INCLUDED_numeric_h
23
24 typedef struct Numeric {
25   int         value;
26   const char* format;
27   const char* str;
28 } Numeric;
29
30 /*
31  * Prototypes
32  */
33 extern char* err_str(int numeric);
34 extern char* rpl_str(int numeric);
35 extern const struct Numeric* get_error_numeric(int err);
36
37 /*
38  * References:
39  *  aircd - aircd source.  Doesn't appear to be available on the web.
40  *          anywhere.  Ask me (Isomer) if you'd like a copy. (it's gpl)
41  *  Numeric List - http://www.contactor.se/~dast/irc/numerics.txt
42  */
43
44
45 /*
46  * Reserve numerics 000-099 for server-client connections where the client
47  * is local to the server. If any server is passed a numeric in this range
48  * from another server then it is remapped to 100-199. -avalon
49  */
50 #define RPL_WELCOME            1
51 #define RPL_YOURHOST           2
52 #define RPL_CREATED            3
53 #define RPL_MYINFO             4
54 #define RPL_ISUPPORT           5        /* Undernet/Dalnet extension */
55      /* RPL_BOUNCE                         IRCnet extension */
56 #define RPL_SNOMASK            8        /* Undernet extension */
57 #define RPL_STATMEMTOT         9        /* Undernet extension */
58 #define RPL_STATMEM           10        /* Undernet extension */
59                                         /* Hybrid: server redirect */
60 /*      RPL_YOURCOOKIE        14           IRCnet extension */
61 #define RPL_MAP               15        /* Undernet extension */
62 #define RPL_MAPMORE           16        /* Undernet extension */
63 #define RPL_MAPEND            17        /* Undernet extension */
64 /*      RPL_ATTEMPTINGJUNC    50           aircd extension */
65 /*      RPL_ATTEMPTINGREROUTE 51           aircd extension */
66
67 /*
68  * Numberic replies from server commands.
69  * These are currently in the range 200-399.
70  */
71
72 #define RPL_TRACELINK        200
73 #define RPL_TRACECONNECTING  201
74 #define RPL_TRACEHANDSHAKE   202
75 #define RPL_TRACEUNKNOWN     203
76 #define RPL_TRACEOPERATOR    204
77 #define RPL_TRACEUSER        205
78 #define RPL_TRACESERVER      206
79 #define RPL_TRACENEWTYPE     208
80 #define RPL_TRACECLASS       209
81 /*      RPL_STATS            210 aircd extension, used instead of having
82                                  multiple stats numerics */
83 /*      RPL_TRACERECONNECT   210 IRCnet extension */                                 
84 #define RPL_STATSLINKINFO    211
85 #define RPL_STATSCOMMANDS    212
86 #define RPL_STATSCLINE       213
87 #define RPL_STATSNLINE       214 /* unused */
88 #define RPL_STATSILINE       215
89 #define RPL_STATSKLINE       216
90 #define RPL_STATSPLINE       217        /* Undernet extenstion */
91 /*      RPL_STATSQLINE       217           Various */
92 #define RPL_STATSYLINE       218
93 #define RPL_ENDOFSTATS       219        /* See also RPL_STATSDLINE */
94 /*      RPL_STATSPLINE       220           Hybrid - Because 217 was for
95                                            old Q: lines. */
96 /*      RPL_STATSBLINE       220           Numerics List: Dalnet */
97 #define RPL_UMODEIS          221
98 /*      RPL_SQLINE_NICK      222           Numerics List: Dalnet */
99 /*      RPL_STATSFLINE       224           Hybrid extension */
100 /*      RPL_STATSDLINE       225           Hybrid extension */
101
102 #define RPL_SERVICEINFO      231        /* unused */
103 #define RPL_ENDOFSERVICES    232        /* unused */
104 #define RPL_SERVICE          233        /* unused */
105 #define RPL_SERVLIST         234        /* unused */
106 #define RPL_SERVLISTEND      235        /* unused */
107
108 #define RPL_STATSENGINE      237        /* Undernet engine name */
109 #define RPL_STATSFLINE       238        /* Undernet feature lines */
110 /*      RPL_STATSIAUTH       239           IRCnet extension */
111 /*      RPL_STATSVLINE       240           IRCnet extension */
112 #define RPL_STATSLLINE       241        
113 #define RPL_STATSUPTIME      242
114 #define RPL_STATSOLINE       243
115 #define RPL_STATSHLINE       244
116 /*      RPL_STATSSLINE       245           Reserved / Dalnet / IRCnet / EFnet */
117 /*      RPL_STATSSPING       246           Numerics List: IRCnet */
118 #define RPL_STATSTLINE       246        /* Undernet extension */
119 #define RPL_STATSGLINE       247        /* Undernet extension */
120 /*      RPL_STATSXLINE       247           hybrid extension */
121 /*      RPL_STATSBLINE       247           Numerics List: IRCnet */
122 #define RPL_STATSULINE       248        /* Undernet extension */
123 /*      RPL_STATSDEFINE      248           Numerics List: IRCnet */
124 #define RPL_STATSDEBUG       249        /* Extension to RFC1459 */
125 #define RPL_STATSCONN        250        /* Undernet extension */
126 /*      RPL_STATSDLINE       250           Numerics List: IRCnet */
127
128 #define RPL_LUSERCLIENT      251
129 #define RPL_LUSEROP          252
130 #define RPL_LUSERUNKNOWN     253
131 #define RPL_LUSERCHANNELS    254
132 #define RPL_LUSERME          255
133 #define RPL_ADMINME          256
134 #define RPL_ADMINLOC1        257
135 #define RPL_ADMINLOC2        258
136 #define RPL_ADMINEMAIL       259
137
138 #define RPL_TRACELOG         261        /* unused */
139 #define RPL_TRACEPING        262        /* Extension to RFC1459, unused */
140 /*      RPL_TRACEEND         262           efnet(?) Numerics List: IRCnet */
141 /*      RPL_LOAD_THROTTLED   263           efnet/hybrid */
142 /*      RPL_TRYAGAIN         263           Numerics List: IRCnet */
143
144 /*      RPL_CURRENT_LOCAL    265           aircd/efnet/hybrid*/
145 /*      RPL_CURRENT_GLOBAL   266           aircd/efnet/hybrid */
146 /*      RPL_START_NETSTAT    267           aircd */
147 /*      RPL_NETSTAT          268           aircd */
148 /*      RPL_END_NETSTAT      269           aircd */
149 #define RPL_PRIVS            270        /* Undernet extension - privs */
150 #define RPL_SILELIST         271        /* Undernet extension */
151 #define RPL_ENDOFSILELIST    272        /* Undernet extension */
152 /*      RPL_NOTIFY           273           aircd */
153 /*      RPL_END_NOTIFY       274           aircd */
154 /*      RPL_STATSDELTA       274           IRCnet extension */
155 #define RPL_STATSDLINE       275        /* Undernet extension */
156
157 #define RPL_GLIST            280        /* Undernet extension */
158 #define RPL_ENDOFGLIST       281        /* Undernet extension */
159 #define RPL_JUPELIST         282        /* Undernet extension - jupe -Kev */
160 #define RPL_ENDOFJUPELIST    283        /* Undernet extension - jupe -Kev */
161 #define RPL_FEATURE          284        /* Undernet extension - features */
162 /*      RPL_CHANINFO_HANDLE  285           aircd */
163 /*      RPL_CHANINFO_USERS   286           aircd */
164 /*      RPL_CHANINFO_CHOPS   287           aircd */
165 /*      RPL_CHANINFO_VOICES  288           aircd */
166 /*      RPL_CHANINFO_AWAY    289           aircd */
167 /*      RPL_CHANINFO_OPERS   290           aircd */
168 /*      RPL_HELPHDR          290        Numeric List: Dalnet */
169 /*      RPL_CHANINFO_BANNED  291           aircd */
170 /*      RPL_HELPOP           291        Numeric List: Dalnet */
171 /*      RPL_CHANINFO_BANS    292           aircd */
172 /*      RPL_HELPTLR          292        Numeric List: Dalnet */
173 /*      RPL_CHANINFO_INVITE  293           aircd */
174 /*      RPL_HELPHLP          293        Numeric List: Dalnet */
175 /*      RPL_CHANINFO_INVITES 294           aircd */
176 /*      RPL_HELPFWD          294        Numeric List: Dalnet */
177 /*      RPL_CHANINFO_KICK    295           aircd */
178 /*      RPL_HELPIGN          295        Numeric List: Dalnet */
179 /*      RPL_CHANINFO_KICKS   296           aircd */
180
181 /*      RPL_END_CHANINFO     299           aircd */
182
183 #define RPL_NONE             300        /* unused */
184 #define RPL_AWAY             301
185 #define RPL_USERHOST         302
186 #define RPL_ISON             303
187 #define RPL_TEXT             304        /* unused */
188 #define RPL_UNAWAY           305
189 #define RPL_NOWAWAY          306
190 #define RPL_USERIP           307        /* Undernet extension */
191                                         /* NotAway, aircd */
192 /*      RPL_WHOISREGNICK     307        Numeric List: Dalnet */                                      
193 /*      RPL_NOTIFYACTION     308         aircd */
194 /*      RPL_WHOISADMIN       308        Numeric List: Dalnet */
195 /*      RPL_NICKTRACE        309         aircd */
196 /*      RPL_WHOISSADMIN      309        Numeric List: Dalnet */
197 /*      RPL_WHOISHELPOP      310         Dalnet */
198 #define RPL_WHOISUSER        311        /* See also RPL_ENDOFWHOIS */
199 #define RPL_WHOISSERVER      312
200 #define RPL_WHOISOPERATOR    313
201 #define RPL_WHOWASUSER       314        /* See also RPL_ENDOFWHOWAS */
202 #define RPL_ENDOFWHO         315        /* See RPL_WHOREPLY/RPL_WHOSPCRPL */
203 /*      RPL_WHOISCHANOP      316           removed from RFC1459 */
204 #define RPL_WHOISIDLE        317
205 #define RPL_ENDOFWHOIS       318        /* See RPL_WHOISUSER/RPL_WHOISSERVER/
206                                            RPL_WHOISOPERATOR/RPL_WHOISIDLE */
207 #define RPL_WHOISCHANNELS    319
208 /*      RPL_WHOIS_HIDDEN     320         Anothernet +h, ick! */
209 #define RPL_LISTSTART        321
210 #define RPL_LIST             322
211 #define RPL_LISTEND          323
212 #define RPL_CHANNELMODEIS    324
213 /*      RPL_CHANNELPASSIS    325           IRCnet extension */
214 /*      RPL_UNIQOPIS         325           IRCnet extension */
215 /*      RPL_NOCHANPASS       326           IRCnet extension */
216 /*      RPL_CHPASSUNKNOWN    327           IRCnet extension */
217 /*      RPL_CHANNEL_URL      328           dalnet, anothernet */
218 #define RPL_CREATIONTIME     329
219 /*      RPL_WHOWAS_TIME      330               ? */
220 #define RPL_NOTOPIC          331
221 #define RPL_TOPIC            332
222 #define RPL_TOPICWHOTIME     333        /* Undernet extension */
223 #define RPL_LISTUSAGE        334        /* Undernet extension */
224 /*      RPL_CHANPASSOK       338           IRCnet extension */
225 /*      RPL_BADCHANPASS      339           IRCnet extension */
226
227 #define RPL_INVITING         341
228 /*      RPL_SUMMONING        342           removed from RFC1459 */
229
230 #define RPL_INVITELIST       346        /* IRCnet, Undernet extension */
231 #define RPL_ENDOFINVITELIST  347        /* IRCnet, Undernet extension */
232 /*      RPL_EXCEPTLIST       348           IRCnet extension */
233 /*      RPL_ENDOFEXCEPTLIST  349           IRCnet extension */
234
235 #define RPL_VERSION          351
236 #define RPL_WHOREPLY         352        /* See also RPL_ENDOFWHO */
237 #define RPL_NAMREPLY         353        /* See also RPL_ENDOFNAMES */
238 #define RPL_WHOSPCRPL        354        /* Undernet extension,
239                                            See also RPL_ENDOFWHO */
240
241 #define RPL_KILLDONE         361        /* not used */
242 #define RPL_CLOSING          362
243 #define RPL_CLOSEEND         363
244 #define RPL_LINKS            364
245 #define RPL_ENDOFLINKS       365
246 #define RPL_ENDOFNAMES       366        /* See RPL_NAMREPLY */
247 #define RPL_BANLIST          367
248 #define RPL_ENDOFBANLIST     368
249 #define RPL_ENDOFWHOWAS      369
250
251 #define RPL_INFO             371
252 #define RPL_MOTD             372
253 #define RPL_INFOSTART        373        /* not used */
254 #define RPL_ENDOFINFO        374
255 #define RPL_MOTDSTART        375
256 #define RPL_ENDOFMOTD        376
257
258 /*      RPL_KICKEXPIRED      377   aircd */
259 /*      RPL_BANEXPIRED       378   aircd */
260 /*      RPL_KICKLINKED       379   aircd */
261 /*      RPL_BANLINKED        380   aircd */
262
263 #define RPL_YOUREOPER        381
264 #define RPL_REHASHING        382
265 /*      RPL_YOURSERVICE      383           Numeric List: various */
266 #define RPL_MYPORTIS         384        /* not used */
267 #define RPL_NOTOPERANYMORE   385        /* Extension to RFC1459, not used */
268
269 #define RPL_TIME             391
270 /*      RPL_START_USERS      392        Dalnet/EFnet/IRCnet */
271 /*      RPL_USERS            393        Dalnet/EFnet/IRCnet */
272 /*      RPL_END_USERS        394        Dalnet/EFnet/IRCnet */
273 /*      RPL_NOUSERS          395        Dalnet/EFnet/IRCnet */
274
275 /*
276  * Errors are in the range from 400-599 currently and are grouped by what
277  * commands they come from.
278  */
279 #define ERR_FIRSTERROR       400        /* unused */
280 #define ERR_NOSUCHNICK       401
281 #define ERR_NOSUCHSERVER     402
282 #define ERR_NOSUCHCHANNEL    403
283 #define ERR_CANNOTSENDTOCHAN 404
284 #define ERR_TOOMANYCHANNELS  405
285 #define ERR_WASNOSUCHNICK    406
286 #define ERR_TOOMANYTARGETS   407
287 /*      ERR_NOSUCHSERVICE    408  IRCnet */
288 #define ERR_NOORIGIN         409
289
290 #define ERR_NORECIPIENT      411
291 #define ERR_NOTEXTTOSEND     412
292 #define ERR_NOTOPLEVEL       413
293 #define ERR_WILDTOPLEVEL     414
294      /* ERR_BADMASK          415           IRCnet extension */
295 #define ERR_QUERYTOOLONG     416        /* Undernet extension */
296      /* ERR_TOOMANYMATCHES   416           IRCnet extension */
297 /*      ERR_LENGTHTRUNCATED  419           aircd */
298
299 #define ERR_UNKNOWNCOMMAND   421
300 #define ERR_NOMOTD           422
301 #define ERR_NOADMININFO      423
302 /*      ERR_FILEERROR        424           removed from RFC1459 */
303
304 #define ERR_NONICKNAMEGIVEN  431
305 #define ERR_ERRONEUSNICKNAME 432
306 #define ERR_NICKNAMEINUSE    433
307 /*      ERR_SERVICENAMEINUSE 434 ? */
308 /*      ERR_SERVICECONFUSED  435 ? */
309 #define ERR_NICKCOLLISION    436
310 #define ERR_BANNICKCHANGE    437        /* Undernet extension */
311      /* ERR_UNAVAILRESOURCE  437           IRCnet extension */
312 #define ERR_NICKTOOFAST      438        /* Undernet extension */
313      /* ERR_DEAD             438           IRCnet reserved for later use */
314 #define ERR_TARGETTOOFAST    439        /* Undernet extension */
315
316 #define ERR_USERNOTINCHANNEL 441
317 #define ERR_NOTONCHANNEL     442
318 #define ERR_USERONCHANNEL    443
319 /*      ERR_NOLOGIN          444           removed from RFC1459 */
320 /*      ERR_SUMMONDISABLED   445           removed from RFC1459 */
321 /*      ERR_USERSDISABLED    446           removed from RFC1459 */
322
323 #define ERR_NOTREGISTERED    451
324 /*      ERR_IDCOLLISION      452           IRCnet extension ? */
325 /*      ERR_NICKLOST         453           IRCnet extension ? */
326
327 #define ERR_NEEDMOREPARAMS   461
328 #define ERR_ALREADYREGISTRED 462
329 #define ERR_NOPERMFORHOST    463
330 #define ERR_PASSWDMISMATCH   464
331 #define ERR_YOUREBANNEDCREEP 465
332 #define ERR_YOUWILLBEBANNED  466
333 #define ERR_KEYSET           467        /* Undernet extension */
334 #define ERR_INVALIDUSERNAME  468        /* Undernet extension */
335
336 /*      ERR_KICKEDFROMCHAN   470         aircd */ 
337 #define ERR_CHANNELISFULL    471
338 #define ERR_UNKNOWNMODE      472
339 #define ERR_INVITEONLYCHAN   473
340 #define ERR_BANNEDFROMCHAN   474
341 #define ERR_BADCHANNELKEY    475
342 #define ERR_BADCHANMASK      476        /* Undernet extension */
343 /*      ERR_NEEDREGGEDNICK   477           DalNet Extention */
344 #define ERR_BANLISTFULL      478        /* Undernet extension */
345 #define ERR_BADCHANNAME      479        /* EFNet extension */
346                                         /* 479 Undernet extension badchan */
347 #define ERR_NOPRIVILEGES     481
348 #define ERR_CHANOPRIVSNEEDED 482
349 #define ERR_CANTKILLSERVER   483
350 #define ERR_ISCHANSERVICE    484        /* Undernet extension */
351 /*      ERR_UNIQOPRIVSNEEDED 485           IRCnet extension */
352 /*      ERR_CHANTOORECENT    487           IRCnet extension */
353 /*      ERR_TSLESSCHAN       488           IRCnet extension */
354 #define ERR_VOICENEEDED      489        /* Undernet extension */
355
356 #define ERR_NOOPERHOST       491
357 /*      ERR_NOSERVICEHOST    492 ? */
358
359 #define ERR_NOFEATURE        493        /* Undernet extension - features */
360 #define ERR_BADFEATVALUE     494        /* Undernet extension - features */
361 #define ERR_BADLOGTYPE       495        /* Undernet extension - features */
362 #define ERR_BADLOGSYS        496        /* Undernet extension - features */
363 #define ERR_BADLOGVALUE      497        /* Undernet extension - features */
364
365 #define ERR_ISOPERLCHAN      498        /* Undernet extension */
366
367 #define ERR_UMODEUNKNOWNFLAG 501
368 #define ERR_USERSDONTMATCH   502
369 /*      ERR_GHOSTEDCLIENT    503           efnet */
370
371 #define ERR_SILELISTFULL     511        /* Undernet extension */
372 /*      ERR_NOTIFYFULL       512           aircd */
373 /*      ERR_TOOMANYWATCH     512           Numeric List: Dalnet */
374 #define ERR_NOSUCHGLINE      512        /* Undernet extension */
375 #define ERR_BADPING          513        /* Undernet extension */
376 /*      ERR_NEEDPONG         512           Numeric List: Dalnet */
377 #define ERR_NOSUCHJUPE       514        /* Undernet extension - jupe -Kev */
378 #define ERR_BADEXPIRE        515        /* Undernet extension - jupe -Kev */
379 #define ERR_DONTCHEAT        516        /* Undernet extension */
380 #define ERR_DISABLED         517        /* Undernet extension -Kev */
381 #define ERR_LONGMASK         518        /* Undernet extension -Kev */
382 #define ERR_TOOMANYUSERS     519        /* Undernet extension -Kev */
383 #define ERR_MASKTOOWIDE      520        /* Undernet extension -Kev */
384 #define ERR_LASTERROR        521
385
386 #endif /* INCLUDED_numeric_h */