This page is intended for developers. If you're looking information on for how to link servers you should refer to the spanningtree module (v4 docs, v3 docs) page instead.

CAPAB

Negotiates the capabilities of the remote server. This includes data such as modes, modules, and limits.

Connection Phases

This message can be used in the following connection phases:

Connection Phase Usable?
Connecting outbound ✔️
Authenticating outbound ✔️
Authenticating inbound ✔️
Fully connected

Syntax

[:<sid>] CAPAB START <protocol>

[:<sid>] CAPAB CAPABILITIES :[<capability-key>=<capability-value>]+

[:<sid>] CAPAB EXTBANS :[<extban-type>:<extban-name>[=<extban-char>]]+

[:<sid>] CAPAB MODULES :[<module-name>[=<module-link-data>]]+

[:<sid>] CAPAB MODSUPPORT :[<module-name>[=<module-link-data>]]+

[:<sid>] CAPAB CHANMODES :[<mode-type>:[<mode-rank>]:<mode-name>=[<mode-prefix>]<mode-char>]+

[:<sid>] CAPAB USERMODES :[<mode-type>:[<mode-rank>]:<mode-name>=[<mode-prefix>]<mode-char>]+

[:<sid>] CAPAB END

Parameter Description
<capability-key> The name of a server capability.
<capability-value> The value of a server capability.
<extban-type> The type of extban this entry represents.
<extban-name> The name of the extban.
<extban-char> The character for this extban.
<mode-type> The type of mode this entry represents.
<mode-rank> If this mode is a prefix mode then the rank of the prefix.
<mode-name> The name of the mode.
<mode-prefix> If this mode is a prefix mode then the prefix character.
<mode-char> The character for this mode.
<module-name> The name of a module that is loaded.
<module-link-data> Data for checking compatibility between servers.
<protocol> The server protocol version to use.

If provided the capability-key fields can be set to one of the following values:

Name Example Value Description
CASEMAPPING ascii The name of the casemapping system used for nicknames.
CHALLENGE jHBspL5fA4wN4Zh0i2sR The challenge key to use for HMAC authentication.
CHANMAX 64 [1205] The maximum number of channels a user can normally join.
EXTBANS ABCDEFabcdef [1205] The extended bans that exist on the remote server.
GLOBOPS 1 [1205] Whether the server supports the GLOBOPS extension.
IDENTMAX 10 [1205] The maximum length of a username (ident).
MAXAWAY 200 The maximum length of an away message.
MAXCHANNEL 64 [1206+] The maximum number of channels a user can normally join.
MAXHOST 64 The maximum length of a hostname.
MAXKICK 255 The maximum length of a kick message.
MAXLINE 512 The maximum length of a client protocol IRC line without tags.
MAXMODES 20 The maximum number of non-simple modes that can be set at once.
MAXNICK 30 [1206+] The maximum length of a nickname.
MAXQUIT 255 The maximum length of a quit message.
MAXREAL 128 The maximum length of a real name.
MAXTOPIC 307 The maximum length of a channel topic.
MAXUSER 10 [1206+] The maximum length of a username (ident).
NICKMAX 30 [1205] The maximum length of a nickname.

If provided the extban-type field can be set to one of the following values:

Name Example Description
acting m (mute) The extban defines a restriction.
matching w (gateway) The extban matches a user.

If provided the mode-type field can be set to one of the following values:

Name Example Description
list b (ban) The mode is a list of values.
param k (key) The mode requires a parameter when setting and unsetting.
param-set l (limit) The mode requires a parameter when setting.
prefix o (op) The mode confers a channel privilege on users.
simple m (moderated) The mode is a simple on/off flag.

[1206+] If provided the module-link-data field is a dictionary of URL-encoded key value pairs.

If provided the protocol field can be set to one of the following values:

Protocol Version Supported By
1202 InspIRCd v2 & v3
1205 InspIRCd v3 & v4
1206 InspIRCd v4

Example Usage

Negotiates protocol 1205 (v3):

CAPAB START 1205

[1205] Negotiates required modules:

CAPAB MODULES :m_foo.so m_bar.so=wibble m_baz.so

[1206+] Negotiates required modules:

CAPAB MODULES :foo bar=key1;key2=value2 baz

[1205] Negotiates optional modules:

CAPAB MODSUPPORT :m_foo.so m_bar.so=wibble m_baz.so

[1206+] Negotiates optional modules:

CAPAB MODSUPPORT :foo bar=key1;key2=value2 baz

Negotiates channel modes:

CAPAB CHANMODES :list:ban=b param:key=k param-set:limit=l prefix:30000:op=@o simple:moderated=m

Negotiates user modes:

CAPAB CHANMODES :param-set:snomask=s simple:wallops=w

Ends capability negotiation:

CAPAB END

History

1206

The m_ prefix and .so suffix were removed from module names in CAPAB MODULES and CAPAB MODSUPPORT.

Module link data was changed from a string to a dictionary of URL-encoded key value pairs.

The EXTBANS token in CAPAB CAPABILITIES was replaced with CAPAB EXTBANS.

The GLOBOPS token in CAPAB CAPABILITIES was replaced with the globops module appearing in CAPAB MODSUPPORT.

The following tokens in CAPAB CAPABILITIES were renamed: