]> jfr.im git - irc/rqf/shadowircd.git/blob - doc/technical/ts6-protocol.txt
97f39d7522dda8388fc362cdbdd8ededcc235237
[irc/rqf/shadowircd.git] / doc / technical / ts6-protocol.txt
1 TS6 protocol description
2 Written by Jilles Tjoelker
3
4 General format: much like rfc1459
5 Maximum parameters for a command: 15 (this does not include the prefix
6 and command name)
7
8 SID: a server's unique ID. It is configured in each server and consists of
9 a digit and two alphanumerics. Sending SIDs with lowercase letters is
10 questionable.
11
12 UID: a client's unique ID. It consists of the server's SID and six
13 alphanumerics (so it is nine characters long). The first of the alphanumerics
14 should be a letter, numbers are legal but reserved for future use.
15
16 hunted: a parameter type used for various remote requests. From local users,
17 nicknames and server names are accepted, possibly with wildcards; from servers,
18 UIDs/SIDs (sending names or even wildcards is deprecated). This is done with
19 the function hunt_server(). Any rate limiting should be done locally.
20
21 duration: a parameter type used for ban durations. It is a duration in seconds.
22 A value of 0 means a permanent ban.
23
24 propagation: to which other servers the command is sent
25
26 For all commands with a hunted parameter, the propagation is determined by
27 that, and not otherwise specified.
28
29 For all commands with a target server mask parameter, the propagation is
30 determined by that, and not otherwise specified. The command is sent to all
31 servers with names matching the given mask (for example '*', '*.example.com',
32 'irc.example.com'). Those servers do not have to be directly connected.
33 Targets cannot be SIDs.
34
35 Propagation broadcast means the command is sent to all servers.
36
37 Propagation one-to-one means the command is only sent to the target or the
38 server the target is on.
39
40 Propagation none means the command is never sent to another server if it is
41 received.
42
43 For some other commands, the propagation depends on the parameters and is
44 described in text.
45
46 services server: server mentioned in a service{} block. There are no services
47 servers on EFnet.
48
49 service: client with umode +S. This implies that it is on a services server.
50
51 connection setup:
52 The initiator sends the PASS, CAPAB and SERVER messages. Upon receiving the
53 SERVER, the listener will check the information, and if it is valid, it will
54 send its own PASS, CAPAB and SERVER messages, followed by SVINFO and the burst.
55 Upon receiving the SERVER, the initiator will send SVINFO and the burst. If
56 ziplinks are used, SVINFO is the first compressed message.
57
58 The burst consists of SID and SERVER messages for all known servers, UID or
59 EUID messages for all known users (possibly followed by ENCAP REALHOST, ENCAP
60 LOGIN and/or AWAY) and SJOIN messages for all known channels (possibly followed
61 by BMASK and/or TB).
62
63 user modes:
64 (all)
65 +D (deaf: does not receive channel messages)
66 +S (network service) (only settable on burst from a services server)
67 +a (appears as server administrator)
68 +i (invisible, see rfc1459)
69 +o (IRC operator, see rfc1459)
70 +w (wallops, see rfc1459) (always propagated for historical reasons)
71 (charybdis TS6)
72 +Q/+R/+g/+l/+s/+z (only locally effective)
73 +Z (ssl user) (only settable on burst)
74 possibly more added by modules
75
76 channel modes:
77 (all)
78 statuses
79 +o (prefix @) (ops)
80 +v (prefix +) (voice)
81 type A
82 +b (ban)
83 +e (ban exception)
84 +I (invite exception)
85 type B
86 +k (key: password required to join, <= 23 ascii chars, no : or , or whitespace)
87 type C
88 +l (limit: maximum number of members before further joins are disallowed)
89 type D
90 +m (moderated)
91 +n (no external messages)
92 +p (private: does not appear in /whois to non-members, no /knock allowed)
93 +r (only registered users may join) (only if a services server exists)
94 +s (secret)
95 +t (only chanops may change topic)
96 (charybdis TS6)
97 type A
98 +q (quiet)
99 type C
100 +f (forward: channel name <= 30 chars)
101 +j (join throttle: N:T with integer N and T)
102 type D
103 +F (free target for +f)
104 +L (large ban list)
105 +P (permanent: does not disappear when empty)
106 +Q (ignore forwards to this)
107 +c (strip colours)
108 +g (allow any member to /invite)
109 +z (send messages blocked by +m to chanops)
110
111 ADMIN
112 source: user
113 parameters: hunted
114
115 Remote ADMIN request.
116
117 AWAY
118 source: user
119 propagation: broadcast
120 parameters: opt. away reason
121
122 If the away reason is empty or not present, mark the user as not away.
123 Otherwise, mark the user as away.
124
125 Changing away reason from one non-empty string to another non-empty string
126 may not be propagated.
127
128 BMASK
129 source: server
130 propagation: broadcast
131 parameters: channelTS, channel, type, space separated masks
132
133 If the channelTS in the message is greater (newer) than the current TS of
134 the channel, drop the message and do not propagate it.
135
136 Type is the mode letter of a ban-like mode. In efnet TS6 this is 'b', 'e' or
137 'I'. In charybdis TS6 additionally 'q' is possible.
138
139 Add all the masks to the given list of the channel.
140
141 All ban-like modes must be bursted using this command, not using MODE or TMODE.
142
143 CAPAB
144 source: unregistered server
145 propagation: none
146 parameters: space separated capability list
147
148 Sends capabilities of the server. This must include QS and ENCAP. It is also
149 strongly recommended to include EX, CHW, IE and KNOCK, and for charybdis TS6
150 also SAVE and EUID. For use with services, SERVICES and RSFNC are strongly
151 recommended.
152
153 The capabilities may depend on the configuration for the server they are sent
154 to.
155
156 CHGHOST
157 charybdis TS6
158 source: any
159 propagation: broadcast
160 parameters: client, new hostname
161
162 Changes the visible hostname of a client.
163
164 Opers are notified unless the source is a server or a service.
165
166 CONNECT
167 source: any
168 parameters: server to connect to, port, hunted
169
170 Remote connect request. A server WALLOPS should be sent by the receiving
171 server.
172
173 The port can be 0 for the default port.
174
175 DLINE
176 charybdis TS6
177 encap only
178 source: user
179 parameters: duration, mask, reason
180
181 Sets a D:line (IP ban checked directly after accepting connection).
182
183 The mask must be an IP address or CIDR mask.
184
185 ENCAP
186 source: any
187 parameters: target server mask, subcommand, opt. parameters...
188
189 Sends a command to matching servers. Propagation is independent of
190 understanding the subcommand.
191
192 Subcommands are listed elsewhere with "encap only".
193
194 ERROR
195 source: server or unregistered server
196 propagation: none
197 parameters: error message
198
199 Reports a (usually fatal) error with the connection.
200
201 Error messages may contain IP addresses and have a negative effect on server
202 IP hiding.
203
204 ETRACE
205 encap only
206 encap target: single server
207 source: oper
208 parameters: client
209
210 Remote ETRACE information request.
211
212 EUID
213 charybdis TS6
214 capab: EUID
215 source: server
216 parameters: nickname, hopcount, nickTS, umodes, username, visible hostname, IP address, UID, real hostname, account name, gecos
217 propagation: broadcast
218
219 Introduces a client. The client is on the source server of this command.
220
221 The account name is '0' if the user is not logged in with services.
222
223 Nick TS rules apply.
224
225 EUID is similar to UID but includes the ENCAP REALHOST and ENCAP LOGIN
226 information.
227
228 GCAP
229 encap only
230 encap target: *
231 source: server
232 parameters: space separated capability list
233
234 Capability list of remote server.
235
236 INFO
237 source: user
238 parameters: hunted
239
240 Remote INFO request.
241
242 INVITE
243 source: user
244 parameters: target user, channel, opt. channelTS
245 propagation: one-to-one
246
247 Invites a user to a channel.
248
249 If the channelTS is greater (newer) than the current TS of the channel, drop
250 the message.
251
252 Not sending the channelTS parameter is deprecated.
253
254 JOIN
255 1.
256 source: user
257 parameters: '0' (one ASCII zero)
258 propagation: broadcast
259
260 Parts the source user from all channels.
261
262 2.
263 source: user
264 parameters: channelTS, channel, '+' (a plus sign)
265 propagation: broadcast
266
267 Joins the source user to the given channel. If the channel does not exist yet,
268 it is created with the given channelTS and no modes. If the channel already
269 exists and has a greater (newer) TS, wipe all simple modes and statuses and
270 change the TS, notifying local users of this but not servers (note that
271 ban-like modes remain intact; invites may or may not be cleared).
272
273 A JOIN is propagated with the new TS of the channel.
274
275 KICK
276 source: any
277 parameters: channel, target user, opt. reason
278 propagation: broadcast
279
280 Kicks the target user from the given channel.
281
282 Unless the channel's TS is 0, no check is done whether the source user has ops.
283
284 Not sending the reason parameter is questionable.
285
286 KILL
287 source: any
288 parameters: target user, path
289 propagation: broadcast
290
291 Removes the user from the network.
292
293 The format of the path parameter is some sort of description of the source of
294 the kill followed by a space and a parenthesized reason. To avoid overflow,
295 it is recommended not to add anything to the path.
296
297 KLINE
298 1.
299 encap only
300 source: user
301 parameters: duration, user mask, host mask, reason
302
303 Sets a K:line (ban on user@host).
304
305 2.
306 capab: KLN
307 source: user
308 parameters: target server mask, duration, user mask, host mask, reason
309
310 As form 1, deprecated.
311
312 KNOCK
313 source: user
314 parameters: channel
315 propagation: broadcast
316
317 Requests an invite to a channel that is locked somehow (+ikl). Notifies all
318 operators of the channel. (In charybdis, on +g channels all members are
319 notified.)
320
321 This is broadcast so that each server can store when KNOCK was used last on
322 a channel.
323
324 LINKS
325 source: user
326 parameters: hunted, server mask
327
328 Remote LINKS request. The server mask limits which servers are listed.
329
330 LOCOPS
331 1.
332 encap only
333 source: user
334 parameters: text
335
336 Sends a message to operators (with umode +l set). This is intended to be
337 used for strict subsets of the network.
338
339 2.
340 capab: CLUSTER
341 source: user
342 parameters: target server mask, text
343
344 As form 1, deprecated.
345
346 LOGIN
347 encap only
348 source: user
349 parameters: account name
350
351 In a burst, states that the source user is logged in as the account.
352
353 LUSERS
354 source: user
355 parameters: server mask, hunted
356
357 Remote LUSERS request. Most servers ignore the server mask, treating it as '*'.
358
359 MODE
360 1.
361 source: user
362 parameters: client, umode changes
363 propagation: broadcast
364
365 Propagates a user mode change. The client parameter must refer to the same user
366 as the source.
367
368 Not all umodes are propagated to other servers.
369
370 2.
371 source: any
372 parameters: channel, cmode changes, opt. cmode parameters...
373
374 Propagates a channel mode change.
375
376 This is deprecated because the channelTS is not included. If it is received,
377 it should be propagated as TMODE.
378
379 MOTD
380 source: user
381 parameters: hunted
382
383 Remote MOTD request.
384
385 NICK
386 1.
387 source: user
388 parameters: new nickname, new nickTS
389 propagation: broadcast
390
391 Propagates a nick change.
392
393 2.
394 source: server
395 parameters: nickname, hopcount, nickTS, umodes, username, hostname, server, gecos
396
397 Historic TS5 user introduction. The user is on the server indicated by the
398 server parameter; the source server is meaningless (local link).
399
400 NICKDELAY
401 charybdis TS6
402 encap only
403 encap target: *
404 source: services server
405 parameters: duration, nickname
406
407 If duration is greater than 0, makes the given nickname unavailable for that
408 time.
409
410 If duration is 0, removes a nick delay entry for the given nickname.
411
412 There may or may not be a client with the given nickname; this does not affect
413 the operation.
414
415 NOTICE
416 source: any
417 parameters: msgtarget, message
418
419 As PRIVMSG, except NOTICE messages are sent out, server sources are permitted
420 and most error messages are suppressed.
421
422 OPERSPY
423 encap only
424 encap target: *
425 source: user
426 parameters: command name, parameters
427
428 Reports operspy usage.
429
430 OPERWALL
431 source: user
432 parameters: message
433 propagation: broadcast
434
435 Sends a message to operators (with umode +z set).
436
437 PART
438 source: user
439 parameters: comma separated channel list, message
440
441 Parts the source user from the given channels.
442
443 PASS
444 source: unregistered server
445 parameters: password, 'TS', TS version, SID
446
447 Sends the server link password, TS version and SID.
448
449 PING
450 source: any
451 parameters: origin, opt. destination server
452
453 Sends a PING to the destination server, which will reply with a PONG. If the
454 destination server parameter is not present, the server receiving the message
455 must reply.
456
457 The origin field is not used in the server protocol. It is sent as the name
458 (not UID/SID) of the source.
459
460 Remote PINGs are used for end-of-burst detection, therefore all servers must
461 implement them.
462
463 PONG
464 source: server
465 parameters: origin, destination
466
467 Routes a PONG back to the destination that originally sent the PING.
468
469 PRIVMSG
470 source: user
471 parameters: msgtarget, message
472
473 Sends a normal message (PRIVMSG) to the given target.
474
475 The target can be:
476 - a client
477 propagation: one-to-one
478 - a channel name
479 propagation: all servers with -D users on the channel
480 (cmode +m/+n should be checked everywhere, bans should not be checked
481 remotely)
482 - a status character ('@'/'+') followed by a channel name, to send to users
483 with that status or higher only.
484 propagation: all servers with -D users with appropriate status
485 - a user@server message, to send to users on a specific server. The exact
486 meaning of the part before the '@' is not prescribed, except that "opers"
487 allows IRC operators to send to all IRC operators on the server in an
488 unspecified format.
489 propagation: one-to-one
490 - a message to all users on server names matching a mask ('$$' followed by mask)
491 propagation: broadcast
492 - a message to all users with hostnames matching a mask ('$#' followed by mask).
493 Note that this is often implemented poorly.
494 propagation: broadcast
495
496 PRIVS
497 charybdis TS6
498 encap only
499 encap target: single server
500 source: oper
501 parameters: client
502
503 Remote PRIVS information request.
504
505 QUIT
506 source: user
507 parameters: comment
508
509 Propagates quitting of a client. No QUIT should be sent for a client that
510 has been removed as result of a KILL message.
511
512 REALHOST
513 charybdis TS6
514 encap only
515 encap target: *
516 source: user
517 parameters: real hostname
518
519 In a burst, propagates the real host of a dynamically-spoofed user.
520
521 REHASH
522 charybdis TS6
523 encap only
524 source: user
525 parameters: opt. rehash type
526
527 Remote REHASH request. If the rehash type is omitted, it is equivalent to
528 a regular /rehash, otherwise it is equivalent to /rehash <rehash type>.
529
530 RESV
531 1.
532 encap only
533 source: user
534 parameters: duration, mask, reason
535
536 Sets a RESV, making a nickname mask or exact channel unavailable.
537
538 2.
539 capab: CLUSTER
540 source: user
541 parameters: target server mask, duration, mask, reason
542
543 As form 1, deprecated.
544
545 RSFNC
546 encap only
547 capab: RSFNC
548 encap target: single server
549 source: services server
550 parameters: target user, new nickname, old nickTS, new nickTS
551
552 Forces a nickname change and propagates it.
553
554 The command is ignored if the nick TS of the user is not equal to the old
555 nickTS parameter. If the new nickname already exists (and is not the target
556 user), it is killed first.
557
558 SASL
559 charybdis TS6
560 encap only
561 1.
562 encap target: *
563 source: server
564 parameters: source uid, '*', 'S', sasl mechanism name
565
566 Requests that a SASL agent (a service) initiate the authentication process.
567 The source uid is that of an unregistered client. This is why it is not sent
568 as the prefix.
569
570 2.
571 encap target: single server
572 source: server
573 parameters: source uid, target uid, mode, data
574
575 Part of a SASL authentication exchange. The mode is 'C' to send some data
576 (base64 encoded), or 'S' to end the exchange (data indicates type of
577 termination: 'A' for abort, 'F' for authentication failure, 'S' for
578 authentication success).
579
580 SAVE
581 capab: SAVE
582 source: server
583 propagation: broadcast
584 parameters: target uid, TS
585
586 Resolve a nick collision by changing a nickname to the UID.
587
588 The server should verify that the UID belongs to a registered user, the user
589 does not already have their UID as their nick and the TS matches the user's
590 nickTS. If not, drop the message.
591
592 SAVE should be propagated as a regular NICK change to links without SAVE capab.
593 present.
594
595 SERVER
596 1.
597 source: unregistered server
598 parameters: server name, hopcount, server description
599
600 Registers the connection as a server. PASS and CAPAB must have been sent
601 before, SVINFO should be sent afterwards.
602
603 If there is no such server configured or authentication failed, the connection
604 should be dropped.
605
606 This is propagated as a SID message.
607
608 2.
609 source: server
610 propagation: broadcast
611 parameters: server name, hopcount, server description
612
613 Introduces a new TS5 server, directly connected to the source of this command.
614 This is only used for jupes as TS5 servers may do little else than existing.
615
616 SID
617 source: server
618 propagation: broadcast
619 parameters: server name, hopcount, sid, server description
620
621 Introduces a new server, directly connected to the source of this command.
622
623 SIGNON
624 source: user
625 propagation: broadcast
626 parameters: new nickname, new username, new visible hostname, new nickTS, new login name
627
628 Broadcasts a change of several user parameters at once.
629
630 Currently only sent after an SVSLOGIN.
631
632 SJOIN
633 source: server
634 propagation: broadcast
635 parameters: channelTS, simple modes, opt. mode parameters..., nicklist
636
637 Broadcasts a channel creation or bursts a channel.
638
639 The nicklist consists of users joining the channel, with status prefixes for
640 their status ('@+', '@', '+' or ''), for example:
641 '@+1JJAAAAAB +2JJAAAA4C 1JJAAAADS'. All users must be behind the source server
642 so it is not possible to use this message to force users to join a channel.
643
644 The interpretation depends on the channelTS and the current TS of the channel.
645 If either is 0, set the channel's TS to 0 and accept all modes. Otherwise, if
646 the incoming channelTS is greater (newer), ignore the incoming simple modes
647 and statuses and join and propagate just the users. If the incoming channelTS
648 is lower (older), wipe all modes and change the TS, notifying local users of
649 this but not servers (invites may be cleared). In the latter case, kick on
650 split riding may happen: if the key (+k) differs or the incoming simple modes
651 include +i, kick all local users, sending KICK messages to servers.
652
653 An SJOIN is propagated with the new TS and modes of the channel. The statuses
654 are propagated if and only if they were accepted.
655
656 SJOIN must be used to propagate channel creation and in netbursts. For regular
657 users joining channels, JOIN must be used. Pseudoservers may use SJOIN to join
658 a user with ops.
659
660 SNOTE
661 charybdis TS6
662 encap only
663 source: server
664 parameters: snomask letter, text
665
666 Sends the text as a server notice from the source server to opers with the
667 given snomask set.
668
669 SQUIT
670 parameters: target server, comment
671
672 Removes the target server and all servers and users behind it from the network.
673
674 If the target server is the receiving server or the local link this came from,
675 this is an announcement that the link is being closed.
676
677 Otherwise, if the target server is locally connected, the server should send
678 a WALLOPS announcing the SQUIT.
679
680 STATS
681 source: user
682 parameters: stats letter, hunted
683
684 Remote STATS request. Privileges are checked on the server executing the
685 actual request.
686
687 SU
688 encap only
689 encap target: *
690 source: services server
691 parameters: target user, new login name (optional)
692
693 If the new login name is not present or empty, mark the target user as not
694 logged in, otherwise mark the target user as logged in as the given account.
695
696 SVINFO
697 source: server
698 propagation: none
699 parameters: current TS version, minimum TS version, '0', current time
700
701 Verifies TS protocol compatibility and clock. If anything is not in order,
702 the link is dropped.
703
704 The current TS version is the highest version supported by the source server
705 and the minimum TS version is the lowest version supported.
706
707 The current time is sent as a TS in the usual way.
708
709 SVSLOGIN
710 charybdis TS6
711 encap only
712 encap target: single server
713 source: services server
714 parameters: target, new nick, new username, new visible hostname, new login name
715
716 Sent after successful SASL authentication.
717
718 The target is a UID, typically an unregistered one.
719
720 Any of the "new" parameters can be '*' to leave the corresponding field
721 unchanged. The new login name can be '0' to log the user out.
722
723 If the UID is registered on the network, a SIGNON with the changes will be
724 broadcast, otherwise the changes will be stored, to be used when registration
725 completes.
726
727 TB
728 source: server
729 propagation: broadcast
730 parameters:
731
732 TIME
733 source: user
734 parameters: hunted
735
736 Remote TIME request.
737
738 TMODE
739 source: any
740 parameters: channelTS, channel, cmode changes, opt. cmode parameters...
741
742 Propagates a channel mode change.
743
744 If the channelTS is greater (newer) than the current TS of the channel, drop
745 the message.
746
747 On input, only the limit on parameters per line restricts how many cmode
748 parameters can be present. Apart from this, arbitrary modes shall be
749 processed. Redundant modes may be dropped. For example, +n-n may be applied and
750 propagated as +n-n, -n or (if the channel was already -n) nothing, but not as
751 +n.
752
753 The parameter for mode -k (removing a key) shall be ignored.
754
755 On output, at most ten cmode parameters should be sent; if there are more,
756 multiple TMODE messages should be sent.
757
758 TOPIC
759 source: user
760 propagation: broadcast
761
762 Propagates a channel topic change. The server may verify that the source has
763 ops in the channel.
764
765 TRACE
766 source: user
767 1.
768 parameters: hunted
769
770 Performs a trace to the target, sending 200 numerics from each server passing
771 the message on. The target server sends a description of the target followed
772 by a 262 numeric.
773
774 TRACE, STATS l and STATS L are the only commands using hunt_server that use the
775 hunted parameter for more than just determining which server the command
776 should be executed on.
777
778 2.
779 parameters: target name, hunted
780
781 Executes a trace command on the target server. No 200 numerics are sent.
782 The target name is a name, not a UID, and should be on the target server.
783
784 UID
785 source: server
786 propagation: broadcast
787 parameters: nickname, hopcount, nickTS, umodes, username, visible hostname, IP address, UID, gecos
788 propagation: broadcast
789
790 Introduces a client. The client is on the source server of this command.
791
792 Nick TS rules apply.
793
794 UNDLINE
795 charybdis TS6
796 encap only
797 source: user
798 parameters: mask
799
800 Removes a D:line (IP ban checked directly after accepting connection).
801
802 The mask must be an IP address or CIDR mask.
803
804 UNKLINE
805 1.
806 encap only
807 source: user
808 parameters: user mask, host mask
809
810 Removes a K:line (ban on user@host).
811
812 2.
813 capab: UNKLN
814 source: user
815 parameters: target server mask, user mask, host mask
816
817 As form 1, deprecated.
818
819 UNRESV
820 1.
821 encap only
822 source: user
823 parameters: mask
824
825 Removes a RESV.
826
827 2.
828 capab: CLUSTER
829 source: user
830 parameters: target server mask, mask
831
832 As form 1, deprecated.
833
834 UNXLINE
835 1.
836 encap only
837 source: user
838 parameters: mask
839
840 Removes an X:line (ban on realname).
841
842 2.
843 capab: CLUSTER
844 source: user
845 parameters: target server mask, mask
846
847 As form 1, deprecated.
848
849 USERS
850 source: user
851 parameters: hunted
852
853 Remote USERS request.
854
855 VERSION
856 source: any
857 parameters: hunted
858
859 Remote VERSION request.
860
861 WALLOPS
862 1.
863 source: user
864 parameters: message
865 propagation: broadcast
866
867 In efnet TS6, sends a message to operators (with umode +z set). This is a
868 deprecated equivalent to OPERWALL.
869
870 In charybdis TS6, sends a message to local users with umode +w set (or possibly
871 another indication that WALLOPS messages should be sent), including non-opers.
872
873 2.
874 source: server
875 parameters: message
876 propagation: broadcast
877
878 Sends a message to local users with umode +w set (or possibly another
879 indication that WALLOPS messages should be sent).
880
881 In efnet TS6 this may include non-opers, in charybdis TS6 this may only be
882 sent to opers.
883
884 WHOIS
885 source: user
886 parameters: hunted, target nick
887
888 Remote WHOIS request.
889
890 XLINE
891 1.
892 encap only
893 source: user
894 parameters: duration, mask, reason
895
896 Sets an X:line (ban on realname).
897
898 2.
899 capab: CLUSTER
900 source: user
901 parameters: target server mask, duration, mask, reason
902
903 As form 1, deprecated.
904
905 Local only commands (charybdis 3.1):
906
907 ACCEPT
908 AUTHENTICATE
909 CAP
910 CHALLENGE
911 CHANTRACE
912 CLOSE
913 CNOTICE
914 CPRIVMSG
915 DIE
916 GET
917 HELP
918 ISON
919 LIST
920 MAP
921 MASKTRACE
922 MODLIST
923 MODLOAD
924 MODRELOAD
925 MODRESTART
926 MODUNLOAD
927 MONITOR
928 NAMES
929 OPER
930 POST
931 PUT
932 RESTART
933 SCAN
934 SET
935 TESTGECOS
936 TESTLINE
937 TESTMASK
938 UHELP
939 UNREJECT
940 USER
941 USERHOST
942 WEBIRC
943 WHO
944 WHOWAS