-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathRELEASE.NOTES
287 lines (220 loc) · 11.3 KB
/
RELEASE.NOTES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
Release Notes for ircu2.10.11
Last Updated: August 17, 2001
Written by Kev <[email protected]>
Based on a document written by Braden <[email protected]>
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.
--disable-asserts
Assertions are a means of checking that certain underlying
assumptions are met. This option disables those assertions.
--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<option>" ./configure
-DNICKLEN=15
This allows you do override the default nick length to 15
characters. If this has different values on different servers your
network *WILL* fall apart. Only use this option if you know what your
doing. If you don't, ask in #coder-com on undernet.
-DNO_THROTTLE
This disables the throttling code. This is used for debugging
*only*. It lets you connect up to 255 clients from one host with no
time considerations. If this is enabled on a production server I will
personally drive your server into the ground. You have been warned.
Operating System and Kernel Requirements:
If you plan allowing more than 1000 clients on your server, you may
need to adjust your kernel resource limits for networking and
I/O. There are two things you will need to pay particular attention
to, the number of file descriptors available and the number of buffers
the kernel has available to read and write data to the file
descriptors.
To calculate kernel buffer requirements a good place to start is to
multiply the expected number connections expected on the machine by
the amount of data we buffer for each connection. Doubling the result
of the above calculation and dividing it by the size of the buffers
the kernel uses for I/O should give you a starting place.
The server uses 2K kernel buffers for clients, and 64K kernel buffers
for servers (actual use may be somewhat higher).
c_count - number of clients expected
c_q - number of bytes buffered for each client
s_count - number of servers expected
s_q - number of bytes buffered for each server
buffer count = (2 * (c_count * c_q + s_count * s_q)) / kernel buffer size
If the client count is 2000 and the server count is 1 (normal leaf)
and your server uses 2K as an I/O buffer size:
You need (2 * (2000 * 2048 + 1 * 65536)) / 2048 or a minimum of 4064
buffers available, if the kernel uses 512 byte buffers you will need a
minimum of 16256 kernel buffers.
These settings may be a bit light for net-breaks under full client
load you will need to experiment a bit to find the right settings for
your server.
FreeBSD --WildThang
You may want to increase your kernel resources if you want to put a
lot of clients on your machine here are a few values to start with:
CHILD_MAX=4096
OPEN_MAX=4096
FD_SETSIZE=4096
NMBCLUSTERS=8096
Solaris 2.6 --Tar
Increase the default hard limit for file descriptors in /etc/system:
set rlim_fd_max = 4096
The server will raise the soft limit to the hard limit.
Linux 2.2 -- [Tri]/Isomer
The kernel has a kernel destination cache size of 4096. If the kernel
sees more than 4096 IP's in 60s it warns 'dst cache overflow'. This
limit can be changed by modifying /proc/sys/net/ipv4/route/max_size.
A patch to select is also recommended if you have regular poll/select
errors.