Previous Next Table of 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.

2.1 Define what type of UNIX your machine uses.

Pick the machine type which best describes your machine and change the #undef to #define (if needed).Some flavours of Unix require no #define and in such cases all others should be #undef'd.


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.

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


Define CPATH to be the directory path to the ``ircd.conf'' file. This path is usually /usr/local/lib/ircd/ircd.conf. The format of this file will be discussed later.

The LPATH #define should be set to ``/dev/null'' unless you plan to debug the ircd program. Note that the logfile grows very quickly.

Define MPATH to be the path to the ``motd'' (message of the day) file for the server. Keep in mind this is automatically displayed whenever anyone signs on to your server.

The PPATH is optional, but if defined, should point to a file which either doesn't exist (but is creatable) or a previously used PPATH file. It is used for storing the server's PID so a ps(1) isn't necessary.

Define QPATH to be the directory path to the ``iauth.conf'' file. This path is usually /usr/local/lib/ircd/iauth.conf. The format of this file is described by a manual page.

The OPATH #define should be set to ``/dev/null'' unless you plan to debug the iauth program. Note that the logfile grows very quickly.


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. The server will chroot to the directory name provded by ``IRCDDIR'' (in Makefile).


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 and RESTART, 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 defined by default and 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.

Undefining this will let 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 undefine SLOW_ACCEPT you MUST define CLONE_CHECK.


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

2.12 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.

Previous Next Table of Contents