Chunky Monkey IRCD - Architecture

Client/Server Structures & Auth Mechanisms

When a peer connects to us we add an entry to the temp list and submit a request to resolve the peer to the resolver subsytem in src/adns and src/ircd/resolver.c, this stores only their host and a flags bit mask. Then when a USER or NICK command is recived from a client, ircd_client_register() is called, which allocates space for a complete client structure, if a SERVER command is received, a server structure is allocated and filled via ircd_server_register(). Currently we don't support the PASS command, though it shouldn't be hard to implement.

When a command is recieved, it is passed to parse_command(), which breaks it into the required structure, and extracts the origin from the command string if it is received from a server. The ircd_command() routine then calls the appropriate command, which is cmd_commandname(struct clientinfo *,struct serverinfo *,struct parsed_cmd *);, this structure then takes the appropriate action and returns control to the core routines contained in ircd.c.

Modular Structure

The core ircd daemon consists of the files in src/ircd/, these cannot be moved into a module, and will always remain in the ircd. All the commands used by the IRCD are available as modules, except quit and unload, which need to be in the daemon, the commands are compiled and stored in the form cmd_*.so, and installed in /usr/local/lib/ircd/modules, these are loaded aas they are needed, and are unloaded by the UNLOAD command which is only available to operators connected directly to the server.

Chunky Monkey IRCD is copyright (c) Chris Plant 2001

It is licensed under the GNU GPL