# Format of this file: descriptionvariablehelptext. # If the question being documented is of type "choice", we list # only the first occurring config variable. The help texts # must not contain empty lines. No variable should occur twice; if it # does, only the first occurrence will be used by Configure. The lines # in a help text should be indented two positions. Lines starting with # `#' are ignored. Limit your lines to 78 characters. # # If you add a help text to this file, please try to be as gentle as # possible. Don't use unexplained acronyms and generally write for the # hypothetical admin who has just downloaded ircu for the first time. # Tell them what to do if they're unsure. Technical information # should go in a README in the Documentation directory. Mention all # the relevant READMEs and HOWTOs in the help text. # # All this was shamelessly stolen from several different sources. Many # thanks to all the contributors. The texts are copyrighted # (c) 1997 # by Carlo Wood and governed by the GNU Public License. # Do you want to change your previous configuration CHANGE_CONFIG You will be presented a series of questions that you have to answer in order to configure the IRC daemon, prior to compilation. If you went through this before, then your choices have been stored in a file '.config'. If you want to use the same stored configuration now, specify 'n'; this will quickly skip through all questions that you already answered previously, only prompting you for NEW questions. Note that NEW questions only can occur when you just upgraded to a new version. Note also that if you abort by pressing ^C (control-C) anywhere, then all answers are lost; you must finish it before the answers are stored. Pressing a 'c' or 'C' (followed by a return) on any question will Continue the script in "use_defaults mode", that means that it will take all default values unless it finds a NEW question (like when you specify a 'n' here). 'C' will finish everything, but a 'c' will only finish the current paragraph. If you are unsure, or if you want to change a previously entered configuration, specify 'y'. Which compiler do you want to use CC Here you need to specify the C compiler you want to use. Using 'gcc' is highly recommended, you might even want to install it on your machine first. Note that you can specify the full path if you are not sure if the compiler is in your PATH (or whether or not the right compiler will be used). An example is: "/usr/ucb/cc". The package needs an ANSI compiler. Some compilers need an extra option to compile ANSI C. In those cases you can add these options also here. For example, on a HPUX-8.x you would use (if you don't have gcc): "cc -Aa -D_HPUX_SOURCE". Note that you should not use quotes. What flags should I pass to $CC CFLAGS These are the compiler flags, used for CC when compiling. If you are not using gcc, it might be possible that your compiler is not supporting -g and -O at the same time. The -g option is necessary to be able to debug the daemon in the case it contains a bug that makes the ircd core dump. Unless you use a version that is proven to be VERY stable, it is highly recommended to use this option. All Undernet production servers are expected to use it in order to help coder-com to track down bugs. The -O3 will optimize the code - it also makes debugging harder. If you have plenty of cpu cycles then you can use -O2 instead of -O3: it will disable inlining which makes it easier to debug or core dump, the daemon will use a few percent more cpu however. If you are not running a production server you should remove the -Ox. Ircd developers can optionally use more options to turn on extra warnings. Developers (which are using gcc of course ;), should use: "-g -Wall -pedantic -DGODMODE" Note that you should not use quotes. Note that the server uses several non-ANSI (though POSIX.1) function calls. Do you need extra include directories EXTRA_INCLUDEDIRS If your compiler needs extra include directories, you can specify them here as a space separated list of directories. Do not use quotes and do not specify the '-I' prefix. Usually you don't have to specify any extra include directory, in that case you should specify "none" here. If unsure, try "none" (without quotes) and see if all the '#include' header files are found during compilation. Which linker flags do you need LDFLAGS Here you can specify extra flags that will be passed to the linker. Usually you will not need to pass any flags and you can therefore specify "none" here (without the quotes). SunOS users may want to add "-Bstatic" (but only if you need it). You can also specify any "-L..." flags here if you need those for extra libraries. Which extra libraries do you need IRCDLIBS Some Operating Systems need linking with extra libraries for some of the functions used by the daemon. In some cases, it is not known which libraries are needed, even when the Operating System is known. This is for instance the case with SunOS, some need -lresolv, while others don't. If you forget to add a library then this will result in 'undefined variables' during linking. If you do not know which library to add, it might be helpful to use the unix command `nm', which lists the variables of a library. For instance, if you get "unknown variable '_res_mkquery'", and you wonder if this is in /usr/lib/libresolv.so, you can do: nm /usr/lib/libresolv.so | grep res_mkquery Do not use the leading '_' in the grep, this underscore is added by the assembler but is not part of the original variable name and does not show up in the output of nm. Most libraries are in /lib or /usr/lib, which are scanned by default. In some cases you will need to tell the linker where to search for a library. You can do this by adding an -L... option to IRCDLIBS. For instance: "-L/usr/ucblib -lucb" will look for 'libucb.so' in /usr/ucblib too. Here is a list of what you MAYBE need to specify depending on your Operating System: OS Specify here NeXT != 2.0 -lsys_s Dynix/ptx -lsocket -linet -lnsl -lseq Dell SVR4 -lsocket -lnsl -lucb All others Default provided by autoconf If unsure use the default provided by autoconf. Where should I install the ircd binary BINDIR After compilation (by typing 'make'), you can install the server with the command 'make install'. This will install the ircd in the directory you specify here. The package tries to use a meaningful name by naming the binary "ircd.", where is the name of the last patch that was applied by the maintainer. A symbolic link (to be specified next) will be used to point to this binary. This allows a /RESTART to immediately start the new version, while keeping the old binary. Note that you need to have write permissions in this directory during the install. Please re-check the permissions/owner and group after installation. What should the name of the installed symbolic link to the executable be SYMLINK 'make install' installs the binary with an unique name, however it makes a symbolic link to this newly installed executable which always has the same name, so you can use /RESTART and/or use this name in scripts that automatically restart the ircd after a reboot or crash. Here you can specify the name of that symbolic link. Note that it may not contain a '/'; it is just the name if the symbolic link and will be installed in BINDIR. Which permissions do you want the binary to have IRCDMODE Here you need to specify the octal file mode of the ircd binary. Recommended is 711 - but you might need setuid or something. Note that using a setuid and starting the daemon as another user does prohibit the daemon from core dumping in case of a crash on some Operating Systems. Which owner do you want the binary to have IRCDOWN This will be the owner of the ircd binary after installation. Which group do you want the binary to have IRCDGRP This will be the group of the ircd binary after installation. Where should I install the man page MANDIR This is the base directory where the manual page of the ircd is installed. If you are not root on your system, you can change it to your personal manpath directory (which of course should be in your MANPATH environment variable then). Use inlining for a few crucial functions FORCEINLINE This will increases the size of the executable with 7 kb, but it also speeds up execution a bit :). Your compiler needs to understand the keyword __inline__ (GNU gcc and egcs do). If unsure, try if `y' compiles. If it doesn't, you can try using a C++ compiler (ie, configure CC to be 'g++' instead 'gcc'). You have poll(), but do you want to use it USE_POLL Some Operating Systems implement select() by calling poll(), others implement poll() by calling select(). The best performance will be achieved by calling the lowest (sys)call ourselves of course. The Undernet Daemon allows you to use select() or poll(). If you specify 'y' here, the daemon will use poll() directly, otherwise it will use select(). If you don't know what your Operating System uses as syscall, you can compile the server with USE_POLL and detach the running process with 'strace -p ', 'truss -p ' or 'trace -p ' depending on your Operating System, these UNIX commands will show you the syscalls and therefore show if you use poll() or select(). The advantage of using poll() is that you are not bothered by the limits of select() and fd_set size (ie, the number of clients that connect). The following Operating Systems seem to use poll(): Solaris 2.x, SunOS 4.x, AIX, Digital UNIX, and NetBSD. linux-2.2.x use poll(), but only of your glibc was compiled with that kernel (and it won't unless you compile it yourself). The following Operating Systems use select(): linux-2.0.x. If unsure, test it (a ./configure check will be added in ircu2.10.06). What is the domain name of your network DOMAINNAME This define allows you to specify what you consider to be 'local'. It is only used for statistics. When you issue the IRC command /stats w, the server will respond with statistics of how many clients have been connecting to your server in the last minute, hour and day. It will give these statistics for all connections (including the servers), all clients (from anywhere) and also for clients whose hostname ends on the domain you specify here. So if you are an ISP and you want to know specifically the client load from your own domain, specify that domain here. If you are unsure what to do, then it isn't really important what you give here, just don't give an empty string. A good guess is the last two parts of your own hostname (ie, if your hostname is foo.bar.nowhere.org, specify 'nowhere.org'). Note that the string you give should NOT start with a '.' and you should not use quotes. Please give a random seed of eight characters RANDOM_SEED You should specify exactly eight characters (0-9A-Za-z) here. Do not use quotes or any other special characters. This value is used to initialize the random generator of the server which is used to generate PING/PONG cookies in order to stop spoofing IP-numbers (a PING with a random number is sent to this IP-number and if the client doesn't respond with the exact same number, access is denied). In order to make the random number impossible to guess, it is important that you use your own random seed here. Does your host have a reliable clock RELIABLE_CLOCK You should really ONLY specify 'y' here when your system clock is stable and accurate at all times (within a few seconds). If you are running ntpdate on a regular basis, or an equivalent like xntpd, to keep your system clock synchronized over the network, then you might have an accurate clock. However, this is not guaranteed, for example, it is known that xntpd gives unstable results on linux in some cases. Note that an unstable clock is worse then an clock that has a constant offset, because the servers attempt to correct for a constant offset, but do not correct jumps of your system clock ! In general you SHOULD be running ntpdate or equivalent AND make sure it works when you run a production server on Undernet. Otherwise leave your clock alone and specify 'n' here. If unsure specify 'n' ! Change root (/) after start of daemon CHROOTDIR If you are a security freak and you want to the daemon to run in its own environment, then you can specify 'y' here. The daemon will change '/' to 'DPATH' (which you will have to specify later). If this confuses you or if you are uncertain, specify 'n'. Do you want the daemon set its own uid/gid CONFIG_SETUGID If you specify 'y' here, then the daemon will attempt to set its User ID (uid) and Group ID (gid) to the numeric values that you will have to specify next. This only makes sense if you (have to) start the server as root. The most secure operation of the server is to not use setuid stuff (here or by means of setting the file mode) and to run the server as a special user only (ie 'irc'). Of course this user must have access to all log and configuration files. Note that using a setuid and starting the daemon as another user does prohibit the daemon from core dumping in case of a crash on some Operating Systems. This option is actually only necessary when you use the Change Root option, because otherwise you can use the file mode to set the uid and gid. Note that the server refuses to run as root. If unsure, specify 'n'. UID of irc daemon IRC_UID Ok, if you insist on using this option: Here you must specify the numeric value of the uid that you want the server to run as. Note that you need to look in the right /etc/passwd file, which isn't the same file when you used the Change Root option. GID of irc daemon IRC_GID Ok, if you insist on using this option: Here you must specify the numeric value of the gid that you want the server to run as. Note that you need to look in the right /etc/group file, which isn't the same file when you used the Change Root option. Allow to specify configuration file on command line CMDLINE_CONFIG If you specify 'y' here, you will be allowed to specify the ircd.conf path (the ircd daemon configuration file) on the command line when starting the daemon (with the -f option). Note that defining this and installing ircd SUID or SGID is a MAJOR security problem - they can use the '-f' option to read any files that the 'new' access lets them. Note also that defining this is a major security hole if other users have accounts on the same machine; when your ircd goes down and some other user starts up the server with a new conf file that has some extra O-lines. So don't use this unless you're debugging. Set up a Unix domain socket to connect clients/servers UNIXPORT If there are lots of users having an account on the same machine (which is very unlikely because the server needs all cpu ;), then using a UNIX domain socket to connect these clients to is more efficient then letting them connect via TCP/IP. A UNIX domain socket is a special device that will be created in your File System. Your client must also support connecting to a UNIX domain socket. The name of the special device must be specified in the "ircd.conf" file by means of an extra 'P: line', see doc/example.conf for the syntax. If you don't have many IRC-ing users on the same host as the server, or when your local IRC client doesn't support UNIX domain sockets, specify 'n' here. Otherwise specify 'y'. Do you need virtual hosting VIRTUAL_HOST This is only needed when you want to run two or more servers on the same machine and on the same port (but different devices). In general you will only need this if you have at least two ethernet cards in your machine with a different IP-number. If you specify 'y' here, then you can "bind" a server to one of your interfaces. You should use the command line option '-w' to tell the server to which interface to bind to. No error is reported if this fails, the server will simply not run. If no '-w' option is given then the server name specified in the 'M: line' of the "ircd.conf" file of the server is used, provided it resolves to an IP-number of one of your interfaces. Note that normally the name does not have to resolve, but when you define this, it MUST resolve or you must use the -w command line option, or the "bind" will fail. If you are unsure, specify 'n'. Will you connect to more then one server at a time HUB All servers of one IRC "network" are connected in a "tree" (no loops). Servers that are only connected to one other server (called the 'uplink') are called "leafs", servers that are connected to more then one other server are called HUBs. If you specify 'n' here then your server will prevent itself from acciden- tally connecting to two servers at once, which is good because this is generally bad for servers in "leaf" positions (they are net.wise located too bad to route traffic). Note that on Undernet all newly linked servers are linked as leafs during their test phase, and should specify 'n' here. Send a short message instead of the MOTD to connecting clients NODEFAULTMOTD Every time a client connects to your server, the full Message Of The Day (as specified in its file MPATH) is sent to the client. Even while many clients allow the user to ignore the message of the day: the server still sends it. Many users never read the message of the day anyway, making it a huge waste of bandwidth. If you specify 'y' here than the server won't send the MOTD by default to the client, but rather tell the client when the MOTD was last changed and how to receive the MOTD by typing /MOTD. If unsure specify 'n'. Do you want to enable debugging output DEBUGMODE Sometimes things just don't work. This doesn't have to be a crash, but it is also possible that your server just doesn't want to start at all, or disallows clients to connect at all, etc. With all such drastic and REPRODUCIBLE problems, it makes sense to recompile the server with this option set and then running the ircd (irc daemon) with the (extra) command line options: -t -x9 This will make the server run in the foreground and write debug output to the terminal; in a lot of cases this can give a clue on what is wrong (although more often it doesn't). Because defining DEBUGMODE uses a LOT of cpu and is never useful unless you are debugging a reproducible test case, you should never specify 'y' here except for the reason just mentioned. You should certainly NEVER specify 'y' for a server that runs on a production net. Do you want memory- allocation and/or leak checking DEBUGMALLOC If you specify 'y' here, then the server will start to do book keeping on the allocated memory blocks. This uses extra cpu and memory, so normally you do not want this - unless you are debugging. This option uses 8 bytes extra per allocated memory block. The main purpose of this option is to check if a call to free(2) is done with a valid pointer - if the pointer was not previously returned by malloc(2), calloc(2) or realloc(2), the server will core dump in a place that allows the maintainer to get an idea of what went wrong - but only when the server was compiled with the -g flag of course. You also need to specify 'y' here if you want to search for memory leaks. On a production server, specify 'n' - unless you have lots of cpu to spare and you volunteer to search for memory leaks - contact the maintainer in this case. If unsure, specify 'n'. Do you want to have boundary checking MEMMAGICNUMS One of the most nasty bugs are those where buffer overruns are involved. In an attempt to catch those in an early stage, this option will add so called "magic numbers" to the beginning and end of each allocated memory block. When a block is freed or reallocated, the magic numbers are checked and the server core dumps when they were corrupted. This option uses 12 bytes extra per allocated memory block. It doesn't really use much extra cpu compared to defining DEBUGMALLOC, so you might as well specify 'y' here, just in case. It only makes sense though if you compiled the server with compiler option '-g'. If unsure, specify 'n'. Do you want memory leak testing (stats M) MEMLEAKSTATS If you specify 'y' here then the server will start to do extra book keeping on the allocated memory blocks, counting the number of currently allocated blocks per source code location (file and line number). You will be able to retrieve these statistics with the command /stats M. When there is a memory leak, then allocated memory blocks that were allocated under certain conditions are never freed (however the contents of those memory blocks are never used anymore); this would result in a (slow?) increase of the count of allocated memory blocks. This option allows to find where these blocks were allocated which might give a clue on the memory leak problem. This option uses 4 bytes extra per allocated memory block. If you want to look for memory leaks, specify 'y' - otherwise specify 'n'. Do you want extra info on allocated sizes MEMSIZESTATS If you specify 'y' here then the server will start to do extra book keeping on the sizes of the allocated memory blocks. /stats M will not only return the number of allocated blocks, but also the total number of allocated bytes involved. If you defined MEMLEAKSTATS to look for memory leaks, it will give the total number of allocated memory per source code location (file and line number). This option uses 4 bytes extra per allocated memory block, unless you already specified 'y' for MEMMAGICNUMS (boundary checking), because in that case it was already included (and it doesn't matter what you specify here). I think you should specify 'y' here, its more fun to see the sizes :). Do you want support for a time interval with /stats M MEMTIMESTATS If you specify 'y' here then the server will start to do extra book keeping on the allocated memory blocks, storing the time at which the memory block was allocated. This especially slows down /stats M (but unless you use that command frequently, it shouldn't really matter) and uses again 4 bytes of extra memory per allocated memory block. This option is especially useful if you are looking for memory leaks because it allows you to specify a time window with /stats M for which counted blocks must be returned. This allows to ignore recently allocated blocks and permanently allocated blocks (since the start of the server). Are you testing on a host without DNS NODNS If you are playing with the server off-line, and no DNS is available, then long delays occur before the server starts up because it tries to resolv the name given on the M:line (which usually isn't given in /etc/hosts) and for each connecting client. If you specify 'y' here, then a call to gethostbyname() will be done only for the real hostname, and the server will not try to resolv clients that connect to `localhost'. Note that other calls to gethostbyname() are still done anyway if you use VIRTUAL_HOST and that the server still tries to resolv clients that connect to the real IP-number of the server. Directory where all ircd stuff sits DPATH DPATH is provided so that the other path names may be provided in just filename form. It is the Default PATH. When the server starts, it chdir's to DPATH before chroot or any other file operation, making it the "current directory" for the server. This is where core files will go if the server core dumps. Note that you should not include quotes here. Note also that the command line option "-d " overrides the DPATH you give here, except for the chroot (if you use that). Server configuration file CPATH This is the IRC daemon Configuration filename, mostly called "ircd.conf". If you just specify the filename, the server will read its configuration file from the Default Path "DPATH", which you specified above. However, you are also allowed to specify a full path. Note that you should not include quotes here. Server MOTD file MPATH MPATH is the filename, relative to DPATH, or the full path, of the "Message Of The Day" file; mostly called "ircd.motd". The contents of this file will be sent to every client that connects to the server, after registration. Note that you should not include quotes here. Server remote MOTD file (3 lines max) RPATH RPATH is the filename, relative to DPATH, or the full path, of the "Remote Message Of The Day" file; mostly called "remote.motd". The contents of this file will be sent to every remote client that issues a /MOTD . Only the first three lines are sent, so you might want to keep it that short ;). Note that you should not include quotes here. File for server pid PPATH PPATH is the filename, relative to DPATH, or the full path, of the "PID file", mostly called "ircd.pid". It is used for storing the server's PID so a ps(1) isn't necessary. Note that you should not include quotes here. Use crypted passwords for operators CRYPT_OPER_PASSWORD In order to allow certain users to become IRC OPERators, they must authenticate themselves with a password. This password is matched against an 'O: line' in the "ircd.conf" configuration file, see doc/example.conf for more details. If you specify 'y' here, you are allowed to use the DES encrypted form of these passwords in your "ircd.conf" file (even more, your Opers don't have to tell you their real password, they can provide the DES encrypted form themselves). Since it has happened often in the past that the "ircd.conf" file was compromised somehow, you are highly encouraged to specify 'y' here and use the DES encrypted form. You can find a program 'mkpasswd' in the ircd/crypt directory that will allow you to generate the encrypted form. Max size of the total of of all sendqs (bytes) BUFFERPOOL This specifies the maximum amount of RAM that your server will allocate for buffering sendQ's. Small leafs can use a value as little as 1000000, while large HUBs need to specify a value as high as 20000000. If you run out of memory, clients and/or servers are dropped with the error "Buffer allocation error". Then you will have to up this number (and install more RAM if appropriate). If you want a more educated guess for this value then realize that any value is good if you _really_ rather want to drop servers and clients then allocate more memory; this will be the case when there is the danger to run out memory for other allocations. Even if you run the daemon on a dedicated machine, then specifying the maximum of the RAM you have is a Bad Thing because really running out of memory is a lot worse then dropping clients in a controlled way: if possible you should have memory left for all the internal structures (channels, clients, banlists, receive buffers) at all times. On average, clients seem to use 150 bytes of sendQ, but at peak moments this can easily increase to 2032 bytes per client (sendQs are allocated in chunks of 2032 bytes). The maximum possible ammount that can be allocated for sendQs is the number of connected clients times whatever you specified as maximum sendQ in your Y: lines in the ircd.conf file. Likely, that value will be larger then the ammount of RAM you have. The educated guess I talked about earlier would be 'number of clients' times * 2048 bytes + 'size of net.burst' * n, where `n' is 1 for leafs and up till 5 for HUB's. The 'size of net.burst' is about 125 bytes per online client (on the total network). For large HUBs with 4000 clients on undernet (30,000 users), this results in 27 Mb. Leafs could use 12 Mb. Of course you can use less when you have less than 4000 local clients. Don't forget to specify this value in bytes. Aggressively empty the sendqpool (Read Help!) HAS_FERGUSON_FLUSHER Instead of dropping clients with 'Buffer Allocation Error', try to send data to clients to try and drop the sendq buffer size as a last resort before dropping clients. This doesn't get rid of the problem, it just tries hard to limit it's impact. WARNING: *THIS PANICS UNCONFIGURED FREEBSD MACHINES*, make sure you've read doc/freebsd.txt before enabling this feature on a FreeBSD machine. Max receive queue for clients (bytes) CLIENT_FLOOD Currently, everything that a client sends to a server is read by the server and stored in a buffer (the clients receive queue). The server will process messages from this queue one by one (running over all clients each time). When a client sends new messages faster they get processed, and the size of its receive buffer reaches this value, the client is dropped with the error "Excess flood". A reasonable value is 1024 bytes. The maximum size is 8000 bytes. Maximum number of network connections (23 - (FD_SETSIZE-4)) MAXCONNECTIONS This specifies the maximum number of network connections the server will use. You also need some non-network connects (log files etc), so the maximum value is "FD_SETSIZE-4". The minimum value is 23. The only benefit of using a small value is that your server uses less memory - but *only* when you really have a small (client) load. Routing server that hardly take clients can use 128 here for instance. Servers that are always full should just specify the maximum amount that still works (which might be less then FD_SETSIZE-4, some OS need kernel hacking to allow more then 1024 fds per process). The only max. value that is guaranteed to work is 252 ;). Note that if the value of FD_SETSIZE is for instance 1024, then that doesn't mean you can't connect MORE clients - but in this case you certainly need kernel hacking. Find an experienced admin with the same Operating System and ask him what the maximum is and how to achieve it. Nickname history length NICKNAMEHISTORYLENGTH This value specifies the length of the nick name history list, which is only used for /WHOWAS. It uses about 300 to 400 bytes per entry. Note that at a net.break so many client disappear that the whole "whowas" list refreshed a few times (unless you make it as big as 20,000 of course - but you shouldn't because thats a waste of ram and cpu). A reasonable value is 'total number of clients' / 25. Allow Opers to see (dis)connects of local clients ALLOW_SNO_CONNEXIT If you specify 'y' here, you will be allowed to see all client connects and disconnects as a server notice. The historical reason for adding this option was to detect clone bots that connected to your server. However, on a large IRC network like Undernet, the number of clients that connect are so huge that it is not possible to keep an eye on this and everyone has been filtering these notices out anyway. Next to that it turned out to use no less then 10% of the total cpu usage last time I measured it (this has been improved after that, but still). Unless you insist on seeing those notices you should specify 'n' here. Note that in the meantime Undernet has a LOT of other (semi- and fully- automated) ways to detect clone bots, which work a LOT better for this purpose. Show IP address in client connection notices SNO_CONNEXIT_IP Usually when showing a client connection, a nick, userid and hostname are displayed. Selecting 'y' here will also display the numeric IP and connection class of the connecting client. This can be useful for detecting spoofed DNS and virtual hosted clones. This does use extra CPU though and is generally not needed, however if a connection monitor bot is the only client that looks at these notices, it is more efficient than sending USERIP for every connection. This option makes the server compatible with Hybrid tcm bots. Do you want to use R: lines in your configuration file R_LINES If you specify 'y' here you will be allowed to use R:lines in the "ircd.conf". This allows more freedom in restricting connections to your server by calling an external program to determine whether to allow the connection. It also uses a lot of overhead however, and can bog things down, so you should consider whether you really need them, and if you can handle the extra load. If unsure, specify 'n'. Process R: lines every rehash R_LINES_REHASH You may not want to have the R: lines checks everywhere since this can cost a lot of time and delays. If you specify 'y' here, then R: lines are checked whenever the "ircd.conf" file is reloaded (when the REHASH command is used, or a signal SIGHUP is received by the daemon). This shouldn't be too much of a drain on the system if the R:lines programs are short. Process R: lines always R_LINES_OFTEN If you specify 'y' here then R: lines will be checked as often as K: lines. Note that this is -very- likely to cause a severe drain on your resources. Use at your own risk, specify 'n' unless your really sure. Do you want to have a default LIST parameter CONFIG_LIST Pre-Undernet, the LIST command could either be given with one channel name, or without any parameter. In the last case it would simply list all channels. In time the IRC networks grew big, until the output of the LIST command always filled up the sendQ of the client (and dis- connected it). This was fixed by Carlo Wood (Run@IRC) on request of a Dutch ISP whose users complained about this: The LIST output is now generated in small chunks, generating more each time when there is room in the clients sendQ. However, then it turned out that LIST (now it worked) used 50% of all cpu (not even mentioning the bandwidth)... This was unacceptable and the mentioned patch was disabled. On the other hand we wanted LIST to work at least partly, so a few new parameters have been added to LIST: <,>,C<,C>,T<,T> each followed by a number they filter respectively the number of users on the channel, the creation time of the channel (or age, depended on the value of the number) and the topic set time. If you specify 'y' here, then each time a "/LIST" (without parameter) is issued by a client, a default parameter is used. Note that when a parameter is used, the client can still max. sendq out - the send flood control only works without any parameter. If you specify 'n' here then a "/LIST" without parameters will list all channels (and work), but as just said: it uses a LOT of cpu and bandwidth on a large net.work. If you specify 'y' you will be prompted for the default parameter. Give default LIST parameter DEFAULT_LIST Here you need to specify the default LIST parameter which is used when the server receives a LIST without any parameter. You should use something that limits the output to a maximum of a few hundred channels; for instance "T<10" (topic is set less then 10 seconds ago) or ">10" (more then 10 users on the channel) or even a combination of this. Note that you should not include quotes here. K: line comments treated as a file COMMENT_IS_FILE If you specify 'y' here, then K: line comments (see doc/example.conf for more details on the K: line syntax) will be treated as a filename by default. The file needs to exist and will be written to clients that match that K: line. If you specify 'n' here, then K: line comments will be treated as a comments by default. In both cases you can override the default by prepending a filename with a '!' or enclose a comment between double quotes. If unsure, use the default. Only nullify idle-time on PRIVMSG IDLE_FROM_MSG The IRC command WHOIS gives an idle time for clients. If you want that this idle time is set to zero only when the clients send a PRIVMSG, then you should specify a 'y' here. If you specify a 'n' then the idle time will be nullified on all messages except the server PING/PONG. Check clone limit (2!) CHECK_CLONE_LIMIT Set this to 2. Check clone period (20!) CHECK_CLONE_PERIOD Set this to 20. Check clone delay (600!) CHECK_CLONE_DELAY Set this to 600. Max auto connects per class (1!) MAXIMUM_LINKS Set this to 1. Enable message logging MSGLOG_ENABLED Define this if you want the server to log received messages in static memory at parsing time. -This is for debugging purposes only-. You might want to redefine LOG_MASK_TYPE in s_debug.h and LOG_MASK_LEVEL in s_debug.c too. The default is to log all messages that change some status in server's data structures. Select 'n' unless you are debugging the server code. DO NOT SELECT THIS ON PRODUCTION SERVERS! Message log size MSGLOG_SIZE Number of messages to log. Keep this low as raising it to 1024 will use 800k of _static_ memory! Recommended value is 128. You must include this even if you selected 'n' for MSGLOG_ENABLED. Max server idle time (60) TIMESEC This is the maximum idle time for the server. If no messages are received in TIMSEC seconds, PINGFREQUENCY and CONNECTFREQUENCY are checked. Recommended value is 60 seconds. KILL nick chase time limit (30) KILLCHASETIMELIMIT This is the maximum amount of time a KILL command will automatically change to the current nick of a user that has just changed nicks from the one given with the original KILL. Don't change this unless you really need to. Max number of channels per user (recommended: 5) MAXCHANNELSPERUSER This is the maximum number of channels a user can be in at a time. The "mandatory" value on Undernet is currently 10. Since it only influences the local server when you decrease it, its up to you to decide if you want to use a smaller value. Do not use a larger value however, because it DOES cost more memory and bandwidth on all other servers when you allow users to join more channels simultaneously. One of the most important reasons to choose a smaller value is the fact that the now-a-days 'GUI' clients tend to stay on every channel they join (they aren't bothered by flooding in other channels). It DOES take your bandwidth however to send all those messages for 10 different channels to all your users. Max number of silence masks (15!) MAXSILES This is the maximum number of masks a user can silence at a time. The silence command allows users to filter messages directed at them from certain users or domains, at the source server. Increasing this number allows users to use up more memory with inefficient use of the command. If your not sure, don't change this. Expected average banmask length (40!) AVBANLEN This is the expected average banmask length. Leave it at 40. Use .config of THIS source tree as your upgrade default CONFIG_NEW Each source tree keeps its *own* config/.config file with the default values for all questions (those that you gave the last time you did a 'make config'). Whenever you do 'make config' again in this source tree, you will get these defaults. However, when you *upgrade* to a new version (and get a NEW source tree), it doesn't have a .config yet and will (try to) use a .config of one of your previous source trees. If you specify 'y' here, then the last defaults of THIS source tree will be used in your next upgrade. Note that any changes you make later to config/.config (by running 'make config' again) will also take effect on this later upgrade. You can always change this by making a new hard link from .config -> ircu2.10.xx/config/.config in the directory where you keep the source trees. If unsure, and you are not currently installing a test source tree, specify 'y'. If this is a second source tree that you will only be experimenting with, specify 'n'. Class 0 ping frequency (120) PINGFREQUENCY If the daemon doesn't receive anything from any of its links within PINGFREQUENCY seconds, then the it will attempt to check for an active link with a PING message. If no reply is received within (PINGFREQUENCY * 2) seconds, then the connection will be closed. This value is overridden by a Y:line in "ircd.conf" if the connections I/C/N: line in "ircd.conf" assigns a specific class to the connection (recommended). Class 0 connect frequency (600) CONNECTFREQUENCY This is the default frequency that the server attempts to reconnect with its uplink server if it is set to auto connect to it. Note that this value is overridden by a Y:line in ircd.conf if the C/N:lines in ircd.conf assigns a specific class to the connection (recommended). Min time before a link is good (300) HANGONGOODLINK Often the net breaks for a short time and its useful to reestablish the same connection faster than CONNECTFREQUENCY would allow, but to keep from trying again on a bad connection, we require that the connection be open for a certain minimum time. The recommended value is 300 seconds. Wait before reconnecting to good link (10!) HANGONRETRYDELAY When attempting to quickly reestablish a connection to a good link, we give the net a few seconds to steady. This time must be long enough for the other end to notice it broke too. The recommended value is 10 seconds. connect(2) timeout (90!) CONNECTTIMEOUT Number of seconds to wait for a connect(2) call to complete. NOTE: this must be at *LEAST* 10. When a client connects, it has CONNECTTIMEOUT - 10 seconds for its host to respond to an ident lookup query and for a DNS lookup to complete. It is recommended you don't change this value, but if you do, consider the fact that users whose clients do not support NOSPOOF will have to type /QUOTE PING before registration. Max send queue (40000) DEFAULTMAXSENDQLENGTH This is the default value of the "max. sendq length" of Y: line classes (see doc/example.conf for details on Y: lines). You will probably always override this value in your "ircd.conf" with the Y: lines. The given value used to be an often used value for client sendqs.