Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
1455 lines (656 sloc) 35.6 KB
Network Working Group L. Hardy
Internet-Draft E. Brocklesby
Expires: July 2, 2005 ircd-ratbox
K. Mitchell
Undernet IRC Network
January 2005
IRC RPL_ISUPPORT Numeric Definition
draft-hardy-irc-isupport-00
Status of this Memo
This document is an Internet-Draft and is subject to all provisions
of section 3 of RFC 3667. By submitting this Internet-Draft, each
author represents that any applicable patent or other IPR claims of
which he or she is aware have been or will be disclosed, and any of
which he or she become aware will be disclosed, in accordance with
RFC 3668.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on July 2, 2005.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
IRC (Internet Relay Chat) is a long-standing protocol for real-time
chatting. Servers often provide features that are backward
compatible with older clients, but do not provide a reliable method
for making clients aware of what extensions exist. This memo
presents a method for servers to advertise such extensions to
Hardy, et al. Expires July 2, 2005 [Page 1]
Internet-Draft IRC RPL_ISUPPORT January 2005
clients.
Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in RFC
2119 [1].
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Problems to be Solved . . . . . . . . . . . . . . . . . . . 5
3. The RPL_ISUPPORT numeric . . . . . . . . . . . . . . . . . . 6
4. Parameters . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1 CASEMAPPING . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 CHANLIMIT . . . . . . . . . . . . . . . . . . . . . . . . 8
4.3 CHANMODES . . . . . . . . . . . . . . . . . . . . . . . . 9
4.4 CHANNELLEN . . . . . . . . . . . . . . . . . . . . . . . . 9
4.5 CHANTYPES . . . . . . . . . . . . . . . . . . . . . . . . 10
4.6 CNOTICE . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.7 CPRIVMSG . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.8 ELIST . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.9 EXCEPTS . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.10 INVEX . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.11 MAXLIST . . . . . . . . . . . . . . . . . . . . . . . . 12
4.12 MODES . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.13 NETWORK . . . . . . . . . . . . . . . . . . . . . . . . 13
4.14 NICKLEN . . . . . . . . . . . . . . . . . . . . . . . . 13
4.15 PREFIX . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.16 SAFELIST . . . . . . . . . . . . . . . . . . . . . . . . 14
4.17 SILENCE . . . . . . . . . . . . . . . . . . . . . . . . 14
4.18 STATUSMSG . . . . . . . . . . . . . . . . . . . . . . . 14
4.19 TARGMAX . . . . . . . . . . . . . . . . . . . . . . . . 15
4.20 TOPICLEN . . . . . . . . . . . . . . . . . . . . . . . . 15
4.21 WATCH . . . . . . . . . . . . . . . . . . . . . . . . . 16
5. Differences to existing implementations . . . . . . . . . . 17
5.1 Conflicts with RFC2812 . . . . . . . . . . . . . . . . . . 17
5.2 Traditional EXCEPTS/INVEX usage . . . . . . . . . . . . . 17
5.3 MAXBANS . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.4 MAXCHANNELS . . . . . . . . . . . . . . . . . . . . . . . 17
5.5 MAXTARGETS . . . . . . . . . . . . . . . . . . . . . . . . 17
5.6 WALLCHOPS . . . . . . . . . . . . . . . . . . . . . . . . 18
Hardy, et al. Expires July 2, 2005 [Page 2]
Internet-Draft IRC RPL_ISUPPORT January 2005
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . 19
7. Security Considerations . . . . . . . . . . . . . . . . . . 20
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 21
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 21
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 21
A. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 23
B. ABNF Description of Capabilities . . . . . . . . . . . . . . 24
C. ChangeLog . . . . . . . . . . . . . . . . . . . . . . . . . 25
Intellectual Property and Copyright Statements . . . . . . . 26
Hardy, et al. Expires July 2, 2005 [Page 3]
Internet-Draft IRC RPL_ISUPPORT January 2005
1. Introduction
The IRC protocol, as originally documented by RFC 1459 [2] and
updated by RFC 2812 [3], is a simple, text-based conferencing
protocol, involving a number of users spread across a number of
interconnected servers. These users may chat with other individual
users, or may chat with groups of users on "channels"--what other
chat systems refer to as "rooms" or "chat rooms". These channels
have various "modes" which can alter the behaviour of the channel.
Over the years, various modifications to the basic IRC protocol have
been made by IRC server programmers. These modifications may amongst
other things, introduce features available to users and remove some
features that were available to users. Due to the wildly varying
nature between IRC servers of what features are supported and how the
protocol differs from RFC 1459 [2] and RFC 2119 [1], it is
problematic for clients to determine just how a server differs from
these specifications.
A de facto standard emerged in the community, originally implemented
by the Undernet's IRC server software based on the 005 numeric from
DALnet's IRC server. This standard allows the server to advertise to
the client upon connection which extensions to the protocol are
supported. This reply, termed RPL_ISUPPORT, uses the non-standard
numeric 005.
Unfortunately, whilst the numeric itself has become a de-facto
standard, differences have emerged between the meaning of extensions
advertised. This memo attempts to standardise the format of the
RPL_ISUPPORT numeric, as well as standardising the definition of
extensions given within this numeric.
Hardy, et al. Expires July 2, 2005 [Page 4]
Internet-Draft IRC RPL_ISUPPORT January 2005
2. Problems to be Solved
The IRC protocol is no longer standardised in many aspects. This
means that various IRC daemons support features others do not, and
clients need a reliable method of determining which features a server
supports. The de-facto standard that emerged to counter this has
itself suffered from a lack of standards.
The solution to these problems is to formally define a method for
servers to advertise to clients the features it supports, and to
formally define the features advertised. The client may then rely on
this method for reliably determining what features a server supports.
Hardy, et al. Expires July 2, 2005 [Page 5]
Internet-Draft IRC RPL_ISUPPORT January 2005
3. The RPL_ISUPPORT numeric
The extension for informing clients about available features is
implemented by the addition of one numeric, RPL_ISUPPORT, which
contains a list of features supported by the server. Clients SHOULD
NOT assume a server supports a feature unless it has been advertised
in RPL_ISUPPORT.
In ABNF [4] notation:
isupport = [ ":" servername SP ] "005" SP nick SP
1*13( token SP ) ":are supported by this server"
token = *1"-" parameter / parameter *1( "=" value )
parameter = 1*20letter
value = *letpun
letter = ALPHA / DIGIT
punct = %d33-47 / %d58-64 / %d91-96 / %d123-126
letpun = letter / punct
where SP is as designated in Appendix A of RFC 2234 [4], and
servername and nick are as designated in section 2.3.1 of RFC 1459
[2]. As with other local numerics, when RPL_ISUPPORT is delivered
remotely, it MUST be converted into a "105" numeric before delivery
to the client.
A token is of the form "-PARAMETER", "PARAMETER" or
"PARAMETER=VALUE". A server MAY send an empty value field and a
parameter MAY have a default value. A server MUST send the parameter
in upper-case text. Unless otherwise stated, when a parameter
contains a value, the value MUST be treated as being case sensitive.
The value MAY contain multiple fields, if this is the case the fields
MUST be delimited with a comma character (',').
Due to the increasingly modular nature of IRC server software, it is
possible that the status of features previously advertised to clients
in RPL_ISUPPORT can change. When this happens, a server SHOULD
reissue the RPL_ISUPPORT numeric with the relevant parameters that
have changed. If a feature becomes unavailable, the server MUST
prefix the parameter with the dash character ('-') when issuing the
updated RPL_ISUPPORT.
As RFC 1459 [2] limits the maximum parameters of any reply to 15, the
maximum amount of extensions that may be advertised is 13. To
counter this, a server MAY issue multiple RPL_ISUPPORT numerics. A
server MUST issue the RPL_ISUPPORT numeric after client registration
has completed. It MUST be issued after the RPL_WELCOME (XXX -
reference?) welcome and MUST be issued before any further commands
Hardy, et al. Expires July 2, 2005 [Page 6]
Internet-Draft IRC RPL_ISUPPORT January 2005
from the client are processed.
Hardy, et al. Expires July 2, 2005 [Page 7]
Internet-Draft IRC RPL_ISUPPORT January 2005
4. Parameters
Servers MAY send parameters that are not covered in this
specification.
4.1 CASEMAPPING
CASEMAPPING=string
The CASEMAPPING parameter is used to indicate what method is used by
the server to compare equality of case-insensitive strings. Possible
values are:
o "ascii": The ASCII characters 97 to 122 (decimal) are defined as
the lower-case characters of ASCII 65 to 90 (decimal). No other
character equivalency is defined.
o "rfc1459": The ASCII characters 97 to 126 (decimal) are defined as
the lower-case characters of ASCII 65 to 94 (decimal). No other
character equivalency is defined.
o "strict-rfc1459": The ASCII characters 97 to 125 (decimal) are
defined as the lower-case characters of ASCII 65 to 93 (decimal).
no other character equivalency is defined.
The value MUST be specified. Whilst RFC 1459 [2] defines character
equivalency in terms of "strict-rfc1459" encoding, this is believed
to be a mistake as the majority of IRC server implementations treat
character equivalency in terms of "rfc1459" encoding with the tilde
character ('~') and caret character ('^') being equivalent.
An example CASEMAPPING token:
CASEMAPPING=rfc1459
4.2 CHANLIMIT
CHANLIMIT=prefix:number[,prefix:number[,...]]
The CHANLIMIT parameter is used to indicate the maximum amount of
channels that a client may join. The value is a series of
"prefix:number" pairs, where "prefix" refers to one or more prefix
characters defined in the PREFIX (Section 4.15) token, and "number"
indicates how many channels of the given type combined may be joined.
The number parameter MAY be omitted if no limit is placed on the
number of channels.
A client SHOULD NOT make any assumptions about how many channels
other clients may join based on the CHANLIMIT parameter.
Hardy, et al. Expires July 2, 2005 [Page 8]
Internet-Draft IRC RPL_ISUPPORT January 2005
An example CHANLIMIT token:
CHANLIMIT=#+:25,&:
Indicates that a client may join up to 25 channels with the prefix
'#' and '+', and an unlimited amount of channels with the '&' prefix.
4.3 CHANMODES
CHANMODES=A,B,C,D
The CHANMODES parameter is used to indicate the channel modes
available and the arguments they take. There are four categories of
modes, defined as follows:
o Type A: Modes that add or remove an address to or from a list.
These modes MUST always have a parameter when sent from the server
to a client. A client MAY issue the mode without an argument to
obtain the current contents of the list.
o Type B: Modes that change a setting on a channel. These modes
MUST always have a parameter.
o Type C: Modes that change a setting on a channel. These modes
MUST have a parameter when being set, and MUST NOT have a
parameter when being unset.
o Type D: Modes that change a setting on a channel. These modes
MUST NOT have a parameter.
To allow for future extensions, a server MAY send additional types,
delimeted by the comma character (','). The behaviour of any
additional types is undefined.
The IRC server MUST NOT list modes in the CHANMODES parameter that
are contained within the PREFIX (Section 4.15) parameter. However,
for completeness, modes within the PREFIX (Section 4.15) parameter
may be treated as type B modes.
An example CHANMODES token:
CHANMODES=b,k,l,imnpst
4.4 CHANNELLEN
CHANNELLEN=number
The CHANNELLEN parameter specifies the maximum length of a channel
name that a client may join. A client elsewhere on the network MAY
join a channel with a name length of higher value. The value MUST be
specified and MUST be numeric.
Hardy, et al. Expires July 2, 2005 [Page 9]
Internet-Draft IRC RPL_ISUPPORT January 2005
An example CHANNELLEN token:
CHANNELLEN=50
Limits the length of a channel name that a user may join to 50
characters.
4.5 CHANTYPES
CHANTYPES=[string]
Special characters used as prefixes are reserved to differentiate
channels from other namespaces within the IRC protocol. The
CHANTYPES parameter specifies these characters.
The value is OPTIONAL and when is not specified indicates that no
channel types are supported.
An example CHANTYPES token:
CHANTYPES=&#
Denotes the ampersand ('&') and hash ('#') characters as channel
prefixes.
4.6 CNOTICE
CNOTICE
The CNOTICE parameter indicates that the server supports the
"CNOTICE" command. An extension for the NOTICE command, as defined
in RFC 1459 [2] section 4.4.2, it allows users with a specific status
in a channel to issue a NOTICE command to a user within that channel,
free of certain restrictions a server MAY apply to NOTICE.
The CNOTICE parameter MUST NOT be specified with a value.
An example CNOTICE token:
CNOTICE
4.7 CPRIVMSG
CPRIVMSG
The CPRIVMSG parameter indicates that the server supports the
"CPRIVMSG" command. An extension for the PRIVMSG command, as defined
in RFC 1459 [2] section 4.4.1, it allows users with a specific status
in a channel to issue a PRIVMSG command to a user within that
channel, free of certain restrictions a server MAY apply to PRIVMSG.
The CPRIVMSG parameter MUST NOT be specified with a value.
Hardy, et al. Expires July 2, 2005 [Page 10]
Internet-Draft IRC RPL_ISUPPORT January 2005
An example CPRIVMSG token:
CPRIVMSG
4.8 ELIST
ELIST=string
The ELIST parameter indicates that the server supports search
extensions to the LIST command. The value is required, and is a
non-delimited set of letters which each denote an extension. The
following extensions, which a client MUST treat as being case
insensitive are defined:
o C: Searching based on creation time, via the "C<val" and "C>val"
modifiers to search for a channel creation time that is lower or
higher than val respectively.
o M: Searching based on mask.
o N: Searching based on !mask.
o P: To explain
o T: Searching based on topic time, via the "T<val" and "T>val"
modifiers to search for a topic time that is lower or higher than
val respectively.
o U: Searching based on user count within the channel, via the
"<val" and ">val" modifiers to search for a channel that has less
than or more than val users respectively.
An example ELIST token:
ELIST=CMNTU
4.9 EXCEPTS
EXCEPTS[=letter]
The EXCEPTS parameter indicates that the server supports "ban
exceptions", as defined in RFC 2811 [5] section 4.3.1. The value is
OPTIONAL and when is not specified indicates that that the letter 'e'
is used as the channel mode for ban exceptions. When the value is
specified, it indicates the letter which is used for ban exceptions.
An example EXCEPTS token:
EXCEPTS
Hardy, et al. Expires July 2, 2005 [Page 11]
Internet-Draft IRC RPL_ISUPPORT January 2005
4.10 INVEX
INVEX[=letter]
The INVEX parameter indicates that the server supports "invite
exceptions", as defined in RFC 2811 [5] section 4.3.2. The value is
OPTIONAL and when is not specified indicates that the letter 'I' is
used as the channel mode for invite exceptions. When the value is
specified, it indicates the letter which is used for invite
exceptions.
An example INVEX token:
INVEX
4.11 MAXLIST
MAXLIST=mode:number[,mode:number[,...]]
The MAXLIST parameter limits how many "variable" modes of type A that
have been defined in the CHANMODES (Section 4.3) token a client may
set in total on a channel. The value MUST be specified and is a set
of "mode:number" pairs, where "mode" refers to a type A mode defined
in the CHANMODES (Section 4.3) token and "number" indicates how many
of the given modes combined a client may issue on a channel.
A client MUST NOT make any assumptions about how many of the given
modes may actually exist on the channel. The limit applies only to
the client setting new modes of the given types.
Example MAXLIST tokens:
MAXLIST=beI:25
Indicates that a client may set up to a total of 25 of a combination
of "+b", "+e" and "+I" modes.
MAXLIST=b:25,eI:50
Indicates that a client may set up to a total of 25 "+b" modes and up
to a total of 50 of a combination of "+e" and "+I" modes.
4.12 MODES
MODES=[number]
The MODES parameter limits how many "variable" modes may be set on a
channel by a single MODE command from a client. A "variable" mode is
defined as being type A, B and C as defined for the CHANMODES
(Section 4.3) parameter, and the channel modes specified in the
PREFIX (Section 4.15) parameter.
A client SHOULD NOT issue more "variable" modes than this in a single
Hardy, et al. Expires July 2, 2005 [Page 12]
Internet-Draft IRC RPL_ISUPPORT January 2005
MODE command. A server MAY however issue more "variable" modes than
this value in a single MODE command. The value is OPTIONAL and when
is not specified indicates that no limit is placed upon "variable"
modes. The value, if specified, MUST be numeric.
An example MODES token:
MODES=3
Limits the number of "variable" modes from a client to the server to
3 per MODE command.
4.13 NETWORK
NETWORK=string
The NETWORK parameter is for informational purposes only and defines
the name of the IRC network that the client is connected to. The
value MUST be specified. A client SHOULD NOT use the value to make
assumptions about supported features on the server.
An example NETWORK token:
NETWORK=EFnet
Indicates the client is connected to the EFnet IRC network.
4.14 NICKLEN
NICKLEN=number
The NICKLEN parameter specifies the maximum length of a nickname that
a client can use. A client elsewhere on the network MAY use a nick
length of higher value. The value MUST be specified and MUST be
numeric.
An example NICKLEN token:
NICKLEN=9
Limits the length of a nickname to 9 characters
4.15 PREFIX
PREFIX=[(modes)prefixes]
Within channels, clients can have various different statuses, denoted
by single character "prefixes". The PREFIX parameter specifies these
prefixes and the channel mode character that it is mapped to. There
is a one-to-one mapping between prefixes and channel modes. The
prefixes are in descending order, from the prefix that gives the most
privileges to the prefix that gives the least.
The value is OPTIONAL and when it is not specified indicates that no
Hardy, et al. Expires July 2, 2005 [Page 13]
Internet-Draft IRC RPL_ISUPPORT January 2005
prefixes are supported.
An example PREFIX token:
PREFIX=(ov)@+
Denotes the at character ('@') as mapping to the channel mode denoted
by the letter 'o', and the plus character ('+') as mapping to the
channel mode denoted by the letter 'v'.
4.16 SAFELIST
SAFELIST
The SAFELIST parameter indicates that the client may request a "LIST"
command from the server, without being disconnected by the large
volume of data the LIST command generates. The SAFELIST parameter
MUST NOT be specified with a value.
An example SAFELIST token:
SAFELIST
4.17 SILENCE
SILENCE=number
The SILENCE parameter indicates the maximum number of entries a user
may have in their silence list. The value is OPTIONAL and if it is
not specified indicates SILENCE support is not available.
Whilst a formal definition of the SILENCE command is outside the
scope of this document, it is generally a list of masks of equivalent
form to those defined as type A in the CHANMODES (Section 4.3)
parameter. Any messages, as defined in RFC 2812 [3] section 3.3,
that originate from another client matching the given mask, with a
destination of the client itself will be dropped by the server.
An example SILENCE token:
SILENCE=15
Indicates a client may have upto 15 masks in their silence list.
4.18 STATUSMSG
STATUSMSG=string
The STATUSMSG parameter indicates that the server supports a method
for the client to send a message via the NOTICE command to those
people on a channel with the specified status.
The value MUST be specified and MUST be a non-delimited list of
Hardy, et al. Expires July 2, 2005 [Page 14]
Internet-Draft IRC RPL_ISUPPORT January 2005
prefixes that have been defined in the PREFIX (Section 4.15)
parameter. The server MUST NOT advertise a character in STATUSMSG
which is also present in CHANTYPES (Section 4.5).
An example STATUSMSG token:
STATUSMSG=@+
Presuming the hash character ('#') is defined within the CHANTYPES
(Section 4.5) parameter, allows the client to send a NOTICE command
to "@#channel" and "+#channel".
4.19 TARGMAX
TARGMAX=[cmd:number,cmd:number,...]
Certain commands from a client MAY contain multiple targets,
delimited by a comma character (','). The TARGMAX parameter defines
the maximum number of targets allowed for commands which accept
multiple targets. The value is OPTIONAL and is a set of "cmd:number"
pairs, where "cmd" refers to a command the client MAY send to the
server, and "number" refers to the maximum targets for this command.
A client MUST treat the "cmd" field as case insensitive.
If the number is not specified for a particular command, then the
command does not have a limit on the number of targets. The server
MUST specify all commands available to the user which support
multiple targets.
If the TARGMAX parameter is not advertised, or a value is not sent
then a client SHOULD assume that no commands except the "JOIN" and
"PART" commands accept multiple parameters.
An example TARGMAX token:
TARGMAX=PRIVMSG:3,WHOIS:1,JOIN:
Indicates that a client could issue 3 targets to a PRIVMSG command, 1
target to a WHOIS command and an unlimited amount of targets to a
JOIN command.
4.20 TOPICLEN
TOPICLEN=number
The TOPICLEN parameter specifies the maximum length of a topic,
defined in RFC 1459 [2] section 4.2.4 that a client may set on a
channel. A channel on the network MAY have a topic with a longer
length. The value MUST be specified and MUST be numeric.
Hardy, et al. Expires July 2, 2005 [Page 15]
Internet-Draft IRC RPL_ISUPPORT January 2005
An example TOPICLEN token:
TOPICLEN=120
Limits the length of a topic to 120 characters.
4.21 WATCH
WATCH=number
The WATCH parameter indicates the maximum number of nicknames a user
may have in their watch list. The value MUST be specified.
Whilst a formal definition of the WATCH command is outside the scope
of this document, it is generally used a method for clients to have
the server notify them when a given nickname joins or leaves the
network. It is designed to replace repetitive use by clients of the
ISON command, as defined in RFC 1459 [2] section 5.8.
An example WATCH token:
WATCH=100
Indicates that a client may have upto 100 nicks in their watch list.
Hardy, et al. Expires July 2, 2005 [Page 16]
Internet-Draft IRC RPL_ISUPPORT January 2005
5. Differences to existing implementations
A number of differences exist between this specification and existing
implementations in current IRC server software.
5.1 Conflicts with RFC2812
RFC 2812 [3] section 5.1, defines a numeric reply "RPL_BOUNCE" with
the associated numeric "005". This conflicts with the numeric
defined within this document for RPL_ISUPPORT. As RFC 2812 [3] is an
Informational RFC and 005 has been widely adopted as the de-facto
standard numeric for RPL_ISUPPORT, this is not seen as problematic.
Moreover, the only server implementation known to implement RFC 2812
[3] moved the RPL_BOUNCE numeric to 010 and adopted the RPL_ISUPPORT
numeric as 005.
5.2 Traditional EXCEPTS/INVEX usage
The EXCEPTS (Section 4.9) and INVEX (Section 4.10) parameters
traditionally take no argument. Whilst they indicate the presence of
these features on the server, they rely on these features using the
+e and +I channel modes respectively. The argument value described
provides extra flexibility whilst retaining backwards compatibility.
5.3 MAXBANS
The MAXBANS parameter was replaced by the MAXLIST (Section 4.11)
parameter. MAXBANS was considered non-useful, because of its
ambiguous meaning; two of the largest IRC networks for example could
not agree whether "MAXBANS=n" was equivalent to "MAXLIST=beI:n" or
"MAXLIST=b:n,e:n,I:n". MAXLIST is also considered considerably more
flexible and can more accurately define the servers behaviour.
5.4 MAXCHANNELS
The MAXCHANNELS parameter was replaced by the CHANLIMIT (Section 4.2)
parameter. Some IRC server implementations did not apply any limits
to server-local "&" channels, the MAXCHANNELS parameter did not
reflect this and so the CHANLIMIT (Section 4.2) parameter was
introduced to replace MAXCHANNELS, as it can more accurately define
the server implementation.
5.5 MAXTARGETS
The MAXTARGETS parameter was replaced by the TARGMAX (Section 4.19)
parameter. As which commands MAXTARGETS applied to is unclear and
different target limits can often apply to different commands, it was
believed the TARGMAX parameter could more accurately define which
Hardy, et al. Expires July 2, 2005 [Page 17]
Internet-Draft IRC RPL_ISUPPORT January 2005
commands may contain multiple targets.
5.6 WALLCHOPS
The WALLCHOPS parameter was replaced by the STATUSMSG (Section 4.18)
parameter. It is believed the STATUSMSG (Section 4.18) parameter is
more flexible. Some IRC server implementations also implemented a
"WALLCHOPS" command, and it was unclear whether the parameter
indicated support for this command or not. This behaviour is still
unclear.
Hardy, et al. Expires July 2, 2005 [Page 18]
Internet-Draft IRC RPL_ISUPPORT January 2005
6. IANA Considerations
This memo does not raise any IANA considerations.
Hardy, et al. Expires July 2, 2005 [Page 19]
Internet-Draft IRC RPL_ISUPPORT January 2005
7. Security Considerations
This memo does not raise any security considerations.
Hardy, et al. Expires July 2, 2005 [Page 20]
Internet-Draft IRC RPL_ISUPPORT January 2005
8. Acknowledgments
The authors gratefully acknowledges the contributions of Bill Fenner
("fenestro"), Perry Lorier ("Isomer"), Kurt Roeckx ("Q") and John
Midgley ("CrazyEddy") in the preparation of this document.
This document is heavily based on a previous document entitled "The
005 numeric".
9 References
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", BCP 14, RFC 2119, March 1997.
[2] Oikarinen, J. and D. Reed, "Internet Relay Chat Protocol", RFC
1459, May 1993.
[3] Kalt, C., "Internet Relay Chat: Client Protocol", RFC 2812,
April 2000.
[4] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997.
[5] Kalt, C., "Internet Relay Chat: Channel Management", RFC 2811,
April 2000.
[6] Bradner, S., "IETF Rights in Contributions", BCP 78, RFC 3667,
February 2004.
Authors' Addresses
Lee Hardy
ircd-ratbox development team
EMail: lee@leeh.co.uk
URI: http://www.leeh.co.uk
Edward Brocklesby
ircd-ratbox development team
57 Williamson Way
Oxford OX4 4TU
UK
Hardy, et al. Expires July 2, 2005 [Page 21]
Internet-Draft IRC RPL_ISUPPORT January 2005
Kevin L. Mitchell
Undernet IRC Network
38 Eighth St., Apt. 7
Cambridge, Massachusetts 02141
US
Phone: +1-617-230-1021
EMail: klmitch@mit.edu
URI: http://www.mit.edu/~klmitch/
Hardy, et al. Expires July 2, 2005 [Page 22]
Internet-Draft IRC RPL_ISUPPORT January 2005
Appendix A. Examples
The following examples show various RPL_ISUPPORT messages from
various IRC server software.
Example network
:server 005 nickname foo
Hardy, et al. Expires July 2, 2005 [Page 23]
Internet-Draft IRC RPL_ISUPPORT January 2005
Appendix B. ABNF Description of Capabilities
This section summarizes the ABNF [4] description of the RPL_ISUPPORT
extension.
Hardy, et al. Expires July 2, 2005 [Page 24]
Internet-Draft IRC RPL_ISUPPORT January 2005
Appendix C. ChangeLog
Note to RFC Editor: This section may be removed on publication as an
RFC.
Here is a log of changes to this document:
2005-01-28 LH Initial draft written, borrowing heavily from the old
i-d by Edward Brocklesby.
2005-01-29 LH
* Fleshed out information on CPRIVMSG, CNOTICE, WATCH and SILENCE
tokens.
* Added CHANNELLEN token.
* Added TOPICLEN token.
* Added TARGMAX token.
2005-02-02 LH
* Documented differences to traditional EXCEPTS/INVEX usage.
* Added the old WALLCHOPS token under differences.
* Added the old MAXBANS token under differences.
* Added the old MAXTARGETS token under differences.
* Added the old MAXCHANNELS token under differences.
2005-02-03 LH
* "Add r remote" to "Add or remove" in CHANMODES.
* Make SILENCE= indicate its unsupported.
* Remove some stuff from STATUSMSG thats beyond the scope of this
document.
* Clarify ETRACE modifiers.
Hardy, et al. Expires July 2, 2005 [Page 25]
Internet-Draft IRC RPL_ISUPPORT January 2005
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement
Copyright (C) The Internet Society (2005). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Hardy, et al. Expires July 2, 2005 [Page 26]