Concepts

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

Documentation of the server protocol is still work in progress. It may be incomplete or inaccurate.

This page explains concepts relating to the InspIRCd Spanning Tree protocol.

Membership Identifier

A membership identifier is an unsigned 64-bit integer that represents a user's membership of a channel. They are specific to a user and channel so multiple memberships may use the same membership id as long as both the user and channel are different.

Message Routing

InspIRCd supports three types of message routing.

Broadcast

Routed to every server on the network. You must process the message locally and then forward it to every server other than the sender. May be sent encapsulated in which case it is okay to disregard it instead.

Message

Routed to a glob mask, a user, or a channel.

If the target is a glob mask then you should process it locally if your server name matches the pattern and then forward to all servers that match the specified pattern.

If the target is a user on your server then you should process it locally.

If the target is a user on another server you should forward it to that server.

If the target is a channel you should process it locally if your server contains users in that channel and then forward it to all servers that have a user on that channel.

Unicast

Routed to a specific server. If your server is the target then you should process it locally. Otherwise, you should forward it to the appropriate server. May be sent encapsulated in which case it is okay to disregard it instead.

UUIDs

As referring to users by their nickname may cause race conditions when they change it the server protocol refers to users using unique immutable identifiers that last for their entire connection and are effectively never reused. This identifier is known as a UUID (unique user identifier) and is made up of two segments:

As nicknames beginning with a number are reserved and not normally usable a user may use, or in the case of nickname collisions be forced to use, their UUID as their nickname. You should make sure your software can handle this.