Next Previous Contents

2. The config.h file

The second step consists of defining options before the compilation. This is done by editing the ``config.h'' file and changing the various #DEFINE's.


This should only be defined for test purposes, and never used on a production server.

Define DEBUGMODE if you want to see the ircd debugging information as the daemon is running. Normally this function will be undefined as ircd produces a considerable amount of output. DEBUGMODE must be defined for either of -t or -x command line options to work. Defining this induces a large overhead for the server as it does a large amount of self diagnostics whilst running.


The server sends the ``motd'' to every client connecting. Every time, it reads it from the disk. This is quite intensive and can be undesirable for busy servers.

Defining CACHED_MOTD will make the server store the ``motd'' in memory, and only read it again from the disk when rehashing if the file has changed.


To use the CHROOTDIR feature, make sure it is #define'd and that the server is being run as root. Better use some other (external) way of setting up chroot environment for ircd and run it from there, not requiring to run as root.


For security conscious server admins, they may wish to leave ENABLE_USERS undefined, disabling the USERS command which can be used to glean information the same as finger can. ENABLE_SUMMON toggles whether the server will attempt to summon local users to irc by writing a message similar to that from talk(1) to a user's tty.


On large IRC networks, the number of invisible users is likely to be large and reporting that number cause no pain. To aid and effect this, SHOW_INVISIBLE_LUSERS is provided to cause the LUSERS command to report the number of invisible users to all people and not just operators. The NO_DEFAULT_INVISIBLE define is used to toggle whether clients are automatically made invisible when they register.


The three operator only commands, KILL, REHASH, RESTART and SET, may all be disabled to ensure that an operator who does not have the correct privilidges does not have the power to cause untoward things to occur. To further curb the actions of guest operators, LOCAL_KILL_ONLY can be defined to only allow locally connected clients to be KILLed.


As of the 2.9.3 version of the server, server-server connections may be compressed using the zlib. In order to compile the server with this feature, you MUST have the zlib package (version 1.0 or higher) already compiled and define ZIP_LINKS in the config.h file. Compression use for server-server connections is separately configured in the ircd.conf file for each server-server link. ZIP_LEVEL allows you to control the compression level that will be used. Values above 5 will noticeably increase the CPU used by the server.

The zlib package may be found at The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). These documents are also available in other formats from


This option is undefined by default, however is needed on some OSes. It creates an artificial delay in processing incoming connections. On a given port, no more than 1 connection per 2 seconds will be processed.

As it is undefined, it lets the server process connections as fast as it can which can cause problems on some OSes (such as SunOS) and be abused (fast massive join of clonebots..), for these reasons, if you decide to keep SLOW_ACCEPT undefined you MUST define CLONE_CHECK.


This option is defined by default and acts as a wrapper, by checking incoming connections early before starting ident query. By default, the server will not accept more than 10 connections from the same host within 2 seconds.

2.10 Other #define's

The rest of the user changable #define's should be pretty much self explanatory in the config.h file. It is *NOT* recommended that any of the file undef the line with "STOP STOP" in it be changed.

Next Previous Contents