1 Release Notes for ircu2.10.11
2 Last Updated: August 17, 2001
3 Written by Kev <klmitch@mit.edu>
4 Based on a document written by Braden <dbtem@yahoo.com>
6 This is a brief description of the changes we have made to the server
7 since the release of ircu2.10.10.
9 This server is only compatible with other servers that are P10. It is
10 compatible and is verified to work with Undernet server versions
11 u2.10.10 and above. Note, however, that some advanced features are
12 only compatible with u2.10.11 and above.
16 GLINE has been extended to allow IRC operators to issue global
17 G-lines; see doc/readme.gline for more information about how to use
18 this feature. These extended features should not be used on networks
19 with u2.10.10 servers.
21 A new JUPE command has been added to permit servers to be juped in a
22 more reliable fashion. This command should not be used on networks
23 with u2.10.10 servers.
25 Two new channel mode manipulation commands, OPMODE and CLEARMODE, have
26 been added. OPMODE works exactly like MODE, except that 1) only IRC
27 operators can use it; 2) it ignores whether or not the operator is a
28 channel operator. CLEARMODE is a reliable means of eradicating
29 certain channel modes; it is given an argument string consisting of
30 the modes to clear. If that argument string is not given, it defaults
31 to "ovpsmikbl." These commands should not be used on networks with
34 When a channel MODE command from a remote user must be bounced, a
35 "MODE -o" for the user will also be sent, in order to attempt to
36 "heal" the desync. Also, the old anti-hack code has been removed,
37 since servers never send MODEs except for bounces.
39 Most compile-time options have been converted to run-time options
40 which may be set through the configuration file or through the use of
41 the new commands SET, RESET, and GET; for more information about
42 these, please refer to doc/example.conf (for configuration file
43 information), doc/readme.features (for a list and description of the
44 options), and doc/readme.log (for a description of the logging
45 subsystem configuration).
47 A new logging subsystem has been written, making it much easier to get
48 ircd to write out log files, or to use syslog if that's desired.
50 The old chroot() code has been removed; that should now be handled via
51 an external wrapper. Such a wrapper has been included in the tools
52 subdirectory. PLEASE READ doc/readme.chroot IF YOU WISH TO USE
53 CHROOT-STYLE JAILS WITH IRCD.
55 The build system has been completely revamped; since most compile-time
56 options are now run-time, the few remaining ones can be placed in
57 ./configure and set with --with-* and --enable-*. Please read INSTALL
58 for more information on how to compile and install the daemon.
60 All of the old select()- and poll()-based event loop has been
61 completely ripped out and replaced, enabling ircd to use kqueue() and
62 /dev/poll, on systems that support those interfaces.
64 All changes made to the u2.10.10 branch have been forward-ported to
67 The server now uses extended numerics exclusively.
69 A large number of code clean-ups, changes, and fixes have been made.
70 Some of these should hopefully increase performance; others will make
71 it easier to maintain the code.
74 Configuration Changes:
76 Most compile-time options are now run-time configurable features, and
77 can be set through the daemon configuration file. Please see
78 doc/example.conf for an illustration of the format (search for
79 F-lines). Documentation for the logging subsystem is in
80 doc/readme.log, and the list and description of all the features is
81 located in doc/readme.features.
86 Again, most compile-time options are now set in the configuration
87 file. The remaining options are set through arguments to
88 ./configure. A list of these options is available with ./configure
89 --help; a more detailed description follows:
92 The configure script attempts to only use poll on systems where that
93 is a direct system call. Sometimes, however, it will not properly
94 detect this. This option is meant to force ircd to use poll on
95 systems where ./configure does not detect that it is a system call.
98 This option turns on DEBUGMODE, which enables code useful for
99 debugging the server. THIS FEATURE SHOULD NOT BE USED ON A PRODUCTION
100 NETWORK; it represents a severe privacy risk.
103 Assertions are a means of checking that certain underlying
104 assumptions are met. This option disables those assertions.
107 By default, the -g compiler option is used to enable symbols on the
108 binary. These symbols are useful when attempting to track down the
109 cause of a crash. Please do not use this option.
112 This option simply adds the -pg compiler option to enable profiling
117 The Coder Committee attempts to release code that generates no
118 compile-time warnings or errors. These two options add gcc-specific
119 warning flags to the compiler flags. These options should not be used
120 if your compiler is not gcc.
123 Some critical functions are forcefully inlined. This flag disables
124 that behavior. It should not be used for performance reasons.
127 On systems that have /dev/poll, the /dev/poll-based engine is
128 automatically enabled. This option inhibits that behavior.
131 On systems that have kqueue(), the kqueue()-based engine is
132 automatically enabled. This option inhibits that behavior.
135 When "make install" is executed, the daemon is installed in such a
136 way that old versions are kept, and a symlink is made to the latest
137 installed version. This option selects the name given to that
138 symlink. Specify a symlink name of "no" or use "--without-symlink" to
139 disable this behavior.
142 The daemon binary is installed with permissions 711 by default; this
143 option may be used to specify a different permission set for the
147 By default, the owner of the installed binary will be the same as
148 the person that compiled it; this option permits a different owner to
152 By default, the group owner of the installed binary will be the same
153 as the primary group of the person that compiled it (at the time it
154 was compiled); this option permits a different group owner to be
158 The daemon attempts to keep some statistics on the server's user
159 load, including how many local users connect to the server. A local
160 user is determined by comparing the user's host name to a domain
161 name. The domain name can be set through the feature subsystem, as
162 documented in doc/readme.features; however, it will default either to
163 the domain specified with this flag, or to a name extracted from
164 /etc/resolv.conf, if it exists.
167 Some admins may wish to run ircd within a chroot "jail," to enhance
168 the security of their systems. Although the chroot() code was removed
169 from ircd, the build system still supports operation of this form. If
170 you wish to use chroot-based jails, read doc/readme.chroot and give
171 this option to ./configure.
174 This option simply specifies the path to the data directory for the
175 daemon. If --with-chroot has been given, this path must be compatible
176 with the chroot directory. See doc/readme.chroot for more information
177 about this restriction.
180 This option simply specifies the path to the configuration file for
181 the daemon, and may be either a relative or absolute path name. If it
182 is an absolute path, and if --with-chroot has been given, this path
183 must be compatible with the chroot directory. See doc/readme.chroot
184 for more information about this restriction.
187 When the server is compiled in DEBUGMODE (--enable-debug), the
188 debugging logs will be sent to the file specified here (defaulting to
189 "ircd.log" in the data directory). If this is an absolute path,
190 --with-chroot has been given, and if that path is not compatible with
191 the chroot directory, then a warning will be issued and the default
192 will be used. See doc/readme.chroot for more information about this
196 The maximum number of sockets that the server may open is normally
197 derived from the hard limit on the number of file descriptors. If
198 desired, a higher value may be used by specifying this option to
202 Undocumented Features:
204 Every Undernet server released has had at least one undocumented
205 feature ;-) Here are a few of the ones available in ircu2.10.11. I'm
206 sure there are a few more we are unaware of, these are the ones we
209 To enable these, you need to add them to CFLAGS prior to running
210 ./configure, usually as in: CFLAGS="-O2 -D<option>" ./configure
213 This allows you do override the default nick length to 15
214 characters. If this has different values on different servers your
215 network *WILL* fall apart. Only use this option if you know what your
216 doing. If you don't, ask in #coder-com on undernet.
219 This disables the throttling code. This is used for debugging
220 *only*. It lets you connect up to 255 clients from one host with no
221 time considerations. If this is enabled on a production server I will
222 personally drive your server into the ground. You have been warned.
225 Operating System and Kernel Requirements:
227 If you plan allowing more than 1000 clients on your server, you may
228 need to adjust your kernel resource limits for networking and
229 I/O. There are two things you will need to pay particular attention
230 to, the number of file descriptors available and the number of buffers
231 the kernel has available to read and write data to the file
234 To calculate kernel buffer requirements a good place to start is to
235 multiply the expected number connections expected on the machine by
236 the amount of data we buffer for each connection. Doubling the result
237 of the above calculation and dividing it by the size of the buffers
238 the kernel uses for I/O should give you a starting place.
240 The server uses 2K kernel buffers for clients, and 64K kernel buffers
241 for servers (actual use may be somewhat higher).
243 c_count - number of clients expected
244 c_q - number of bytes buffered for each client
245 s_count - number of servers expected
246 s_q - number of bytes buffered for each server
248 buffer count = (2 * (c_count * c_q + s_count * s_q)) / kernel buffer size
250 If the client count is 2000 and the server count is 1 (normal leaf)
251 and your server uses 2K as an I/O buffer size:
253 You need (2 * (2000 * 2048 + 1 * 65536)) / 2048 or a minimum of 4064
254 buffers available, if the kernel uses 512 byte buffers you will need a
255 minimum of 16256 kernel buffers.
257 These settings may be a bit light for net-breaks under full client
258 load you will need to experiment a bit to find the right settings for
263 You may want to increase your kernel resources if you want to put a
264 lot of clients on your machine here are a few values to start with:
274 Increase the default hard limit for file descriptors in /etc/system:
276 set rlim_fd_max = 4096
278 The server will raise the soft limit to the hard limit.
280 Linux 2.2 -- [Tri]/Isomer
282 The kernel has a kernel destination cache size of 4096. If the kernel
283 sees more than 4096 IP's in 60s it warns 'dst cache overflow'. This
284 limit can be changed by modifying /proc/sys/net/ipv4/route/max_size.
286 A patch to select is also recommended if you have regular poll/select