Release Notes for ircu2.10.11 Last Updated: August 17, 2001 Written by Kev Based on a document written by Braden This is a brief description of the changes we have made to the server since the release of ircu2.10.10. This server is only compatible with other servers that are P10. It is compatible and is verified to work with Undernet server versions u2.10.10 and above. Note, however, that some advanced features are only compatible with u2.10.11 and above. Enhancements: GLINE has been extended to allow IRC operators to issue global G-lines; see doc/readme.gline for more information about how to use this feature. These extended features should not be used on networks with u2.10.10 servers. A new JUPE command has been added to permit servers to be juped in a more reliable fashion. This command should not be used on networks with u2.10.10 servers. Two new channel mode manipulation commands, OPMODE and CLEARMODE, have been added. OPMODE works exactly like MODE, except that 1) only IRC operators can use it; 2) it ignores whether or not the operator is a channel operator. CLEARMODE is a reliable means of eradicating certain channel modes; it is given an argument string consisting of the modes to clear. If that argument string is not given, it defaults to "ovpsmikbl." These commands should not be used on networks with u2.10.10 servers. When a channel MODE command from a remote user must be bounced, a "MODE -o" for the user will also be sent, in order to attempt to "heal" the desync. Also, the old anti-hack code has been removed, since servers never send MODEs except for bounces. Most compile-time options have been converted to run-time options which may be set through the configuration file or through the use of the new commands SET, RESET, and GET; for more information about these, please refer to doc/example.conf (for configuration file information), doc/readme.features (for a list and description of the options), and doc/readme.log (for a description of the logging subsystem configuration). A new logging subsystem has been written, making it much easier to get ircd to write out log files, or to use syslog if that's desired. The old chroot() code has been removed; that should now be handled via an external wrapper. Such a wrapper has been included in the tools subdirectory. PLEASE READ doc/readme.chroot IF YOU WISH TO USE CHROOT-STYLE JAILS WITH IRCD. The build system has been completely revamped; since most compile-time options are now run-time, the few remaining ones can be placed in ./configure and set with --with-* and --enable-*. Please read INSTALL for more information on how to compile and install the daemon. All of the old select()- and poll()-based event loop has been completely ripped out and replaced, enabling ircd to use kqueue() and /dev/poll, on systems that support those interfaces. All changes made to the u2.10.10 branch have been forward-ported to u2.10.11. The server now uses extended numerics exclusively. A large number of code clean-ups, changes, and fixes have been made. Some of these should hopefully increase performance; others will make it easier to maintain the code. Configuration Changes: Most compile-time options are now run-time configurable features, and can be set through the daemon configuration file. Please see doc/example.conf for an illustration of the format (search for F-lines). Documentation for the logging subsystem is in doc/readme.log, and the list and description of all the features is located in doc/readme.features. Compile Time Options: Again, most compile-time options are now set in the configuration file. The remaining options are set through arguments to ./configure. A list of these options is available with ./configure --help; a more detailed description follows: --enable-poll The configure script attempts to only use poll on systems where that is a direct system call. Sometimes, however, it will not properly detect this. This option is meant to force ircd to use poll on systems where ./configure does not detect that it is a system call. --enable-debug This option turns on DEBUGMODE, which enables code useful for debugging the server. THIS FEATURE SHOULD NOT BE USED ON A PRODUCTION NETWORK; it represents a severe privacy risk. --enable-asserts Assertions are a means of checking that certain underlying assumptions are met. This option enables those assertions. Note: This option should not be activated on production servers due to debugging code in the server's MyMalloc() implementation which will cause the server to leak memory. --disable-symbols By default, the -g compiler option is used to enable symbols on the binary. These symbols are useful when attempting to track down the cause of a crash. Please do not use this option. --enable-profile This option simply adds the -pg compiler option to enable profiling support. --enable-pedantic --enable-warnings The Coder Committee attempts to release code that generates no compile-time warnings or errors. These two options add gcc-specific warning flags to the compiler flags. These options should not be used if your compiler is not gcc. --disable-inlines Some critical functions are forcefully inlined. This flag disables that behavior. It should not be used for performance reasons. --disable-devpoll On systems that have /dev/poll, the /dev/poll-based engine is automatically enabled. This option inhibits that behavior. --disable-kqueue On systems that have kqueue(), the kqueue()-based engine is automatically enabled. This option inhibits that behavior. --with-symlink=name When "make install" is executed, the daemon is installed in such a way that old versions are kept, and a symlink is made to the latest installed version. This option selects the name given to that symlink. Specify a symlink name of "no" or use "--without-symlink" to disable this behavior. --with-mode=mode The daemon binary is installed with permissions 711 by default; this option may be used to specify a different permission set for the binary. --with-owner=owner By default, the owner of the installed binary will be the same as the person that compiled it; this option permits a different owner to be specified. --with-group=group By default, the group owner of the installed binary will be the same as the primary group of the person that compiled it (at the time it was compiled); this option permits a different group owner to be specified. --with-domain=domain The daemon attempts to keep some statistics on the server's user load, including how many local users connect to the server. A local user is determined by comparing the user's host name to a domain name. The domain name can be set through the feature subsystem, as documented in doc/readme.features; however, it will default either to the domain specified with this flag, or to a name extracted from /etc/resolv.conf, if it exists. --with-chroot=dir Some admins may wish to run ircd within a chroot "jail," to enhance the security of their systems. Although the chroot() code was removed from ircd, the build system still supports operation of this form. If you wish to use chroot-based jails, read doc/readme.chroot and give this option to ./configure. --with-dpath=dir This option simply specifies the path to the data directory for the daemon. If --with-chroot has been given, this path must be compatible with the chroot directory. See doc/readme.chroot for more information about this restriction. --with-cpath=file This option simply specifies the path to the configuration file for the daemon, and may be either a relative or absolute path name. If it is an absolute path, and if --with-chroot has been given, this path must be compatible with the chroot directory. See doc/readme.chroot for more information about this restriction. --with-lpath=file When the server is compiled in DEBUGMODE (--enable-debug), the debugging logs will be sent to the file specified here (defaulting to "ircd.log" in the data directory). If this is an absolute path, --with-chroot has been given, and if that path is not compatible with the chroot directory, then a warning will be issued and the default will be used. See doc/readme.chroot for more information about this restriction. --with-maxcon=maxcon The maximum number of sockets that the server may open is normally derived from the hard limit on the number of file descriptors. If desired, a higher value may be used by specifying this option to ./configure. Undocumented Features: Every Undernet server released has had at least one undocumented feature ;-) Here are a few of the ones available in ircu2.10.11. I'm sure there are a few more we are unaware of, these are the ones we know about. To enable these, you need to add them to CFLAGS prior to running ./configure, usually as in: CFLAGS="-O2 -D