]> jfr.im git - irc/quakenet/snircd.git/blame - RELEASE.NOTES
Added tag u2.10.12.10+snircd(1.3.4a) for changeset 88862e3aed8f
[irc/quakenet/snircd.git] / RELEASE.NOTES
CommitLineData
189935b1 1Release notes for ircu2.10.12
2Last updated: 1 Sep 2005
3Written by Michael Poole <mdpoole@troilus.org>
4Based on earlier documents by Kev <klmitch@mit.edu> and
5Braden <dbtem@yahoo.com>.
6
7This document briefly describes changes in ircu2.10.12 relative to
8ircu2.10.11. ircu2.10.12 is only compatible with servers that
9implement the P10 protocol. It has been tested to link against
10ircu2.10.11, but some features (notably IPv6 support and oplevels) are
11not supported by ircu2.10.11.
12
13Semantic Changes (TAKE NOTE):
14
15Channel keys and passwords (see the "oplevels" enhancement below)
16listed in a JOIN are now only checked against the corresponding
17channel. In ircu2.10.11, "JOIN #a,#b key" would attempt to use "key"
18as the key for both #a and #b. ircu2.10.12 will only attempt to use
19it as the key for #a. ircu2.10.12's behavior matches that documented
20in RFC 1459.
21
22Enhancements:
23
24The configuration file format has changed to one that is easier to
25read. It is based on the configuration parser found in ircd-hybrid.
26As usual, an example configuration file can be found in the doc
27subdirectory.
28
29ircu now supports IPv6 clients. If your operating system provides
30IPv6 socket support, ircu can accept connections on IPv6 addresses.
31Even if your operating system does not support IPv6 sockets, you can
32link (using IPv4) to a server that has IPv6 clients, and ircu will
33treat the IPv6 clients correctly.
34
35The DNS resolver has been replaced with a streamlined version (also
36from ircd-hybrid) that avoids some of the complications from using
37the full libresolv or adns libraries.
38
39The server can query an IAUTH external authorization server. The
40protocol is described in doc/readme.iauth. This allows an external
41program to accept or reject any client that connects to the server
42and allows that external program to assign an account stamp to the
43incoming user.
44
45A new feature called "oplevels" has been added. It uses new channel
46keys (+A for the administrator, +U for users) to grant chanop status
47when you join using those keys. Part of this channel protection is
48that you cannot be deopped in channel by someone who you opped.
49
50A new channel mode, +D, has been added for auditorium-style channels.
51These are channels where most users listen but do not speak or receive
52ops or voice. The effect of +D is that the server waits to send the
53JOIN message for new users until the user gets ops or voice or sends a
54message to the channel. A list of join-delayed users in a channel may
55be retrieved by using /NAMES -d #channel. The response to /NAMES -d
56uses the same format as numeric 353, but uses numeric 355 instead. If
57an op removes +D while there are still join-delayed users, the server
58automatically sets mode +d, and removes +d when the last user's join
59is shown. It is not possible to set channel mode +d manually; its
60purpose is to warn channel users that there are "hidden" users in the
61channel.
62
63More than one hashing mechanism is now supported for oper passwords,
64and a new tool (ircd/umkpasswd) is provided to generate them.
65
66Commands that send messages to specified services may be defined in
67the configuration file by using Pseudo blocks. This lets users use
68commands like /X or /CHANSERV from their client, without tying the
69admin to a particular arrangement or naming of services.
70
71The /stats command accepts string identifiers in addition to
72single-character identifiers. For example, "/stats access" shows the
73same data as "/stats i". Supported names are shown by /stats. New
74/stats options are: /stats a (nameservers), to list DNS nameservers in
75use; /stats L (modules), to list loaded modules; and /stats R
76(mappings), to list privmsg helper commands defined by Pseudo blocks.
77By default, all of these are hidden from normal users.
78
79Client blocks (previously I: lines), Operator blocks (previously O:
80and o: lines), channel bans and silences may use CIDR notation instead
81of simple wildcards. You may also have silence exceptions by putting
82'~' before the mask; for example, if you wish to silence everyone
83except X, you could use SILENCE *!*@*,~X!cservice@undernet.org.
84
85The server will no longer kick "net riders" in keyed (+k) channels if
86both sides of the net join have the same key.
87
88IP masks (as used in bans, G-lines, etc) are now parsed in a more
89forgiving manner. 127.0.0.0/8, 127.* and 127/8 are all accepted and
90mean the same thing. Ambiguous expressions like 127/8 are interpreted
91as IPv4 masks; to interpret it as an IPv6 mask, use 127:/8.
92
93Configuration Changes:
94
95As mentioned above, the configuration file format has changed
96radically. Please consult doc/example.conf for details on the
97new format. Some prominent changes follow.
98
99The old contents of H: lines have been merged into the Connect block
100that describes the peer server(s) that should be allowed to hub.
101
102Two default virtual host addresses may be specified, one for IPv4
103sockets and one for IPv6 sockets.
104
105Nickname jupes have their own blocks, and do not share structure with
106UWorld server declarations.
107
108Operator connection classes and individual operator blocks may be
109assigned privileges, rather than having them controlled globally.
110Because of this, the feature settings that controlled the privileges
111globally have been removed.
112
113The maximum number of clients allowed per IP may be set in a Client
114block (the equivalent of C: lines).
115
116New feature settings (see doc/readme.features for explanations):
117ANNOUNCE_INVITES, HIS_STATS_L, HIS_STATS_a, HIS_STATS_R,
118LOCAL_CHANNELS, TOPIC_BURST.
119
120Deleted features, since they had no effect even in 2.10.11: AUTOHIDE,
121HIS_DESYNCS, TIMESEC.
122
123Deleted features since they are now controlled by other configuration
124entries: VIRTUAL_HOST, oper and locop privilege features.
125
37d25209 126Deleted feature since it no longer applies: HIS_STATS_h.
127
189935b1 128Compile Time Options:
129
130A listing of supported compile-time options may be seen by running
131"./configure --help". The defaults should be sane. In particular,
132you should NOT compile with --enable-debug or with --disable-symbols
133on a production network.
134
135Otherwise Undocumented Features:
136
137Despite our preferences to keep these undocumented, they are
138occasionally useful, and are described here for users who may
139need them.
140
141To enable these, you need to add them to CFLAGS prior to running
142./configure, usually as in: CFLAGS="-O2 -D<option>" ./configure
143
144-DNICKLEN=20
145
146 This allows you change the maximum nick length from 15 to 20 (or
147whatever number you use at the end). It MUST be the same on all
148servers on your network, or bad things will happen. You should also
149use the NICKLEN feature in ircd.conf.
150
151-DNOTHROTTLE
152 This disables the throttling code. This is used for debugging
153*only*. It lets you connect up to 255 clients from one host with no
154time considerations. If this is enabled on a production server Kev will
155personally drive your server into the ground. You have been warned.
156
157
158Operating System and Kernel Requirements:
159
160If you plan allowing more than 1000 clients on your server, you may
161need to adjust your kernel resource limits for networking and
162I/O. There are two things you will need to pay particular attention
163to, the number of file descriptors available and the number of buffers
164the kernel has available to read and write data to the file
165descriptors.
166
167To calculate kernel buffer requirements a good place to start is to
168multiply the expected number connections expected on the machine by
169the amount of data we buffer for each connection. Doubling the result
170of the above calculation and dividing it by the size of the buffers
171the kernel uses for I/O should give you a starting place.
172
173The server uses 2K kernel buffers for clients, and 64K kernel buffers
174for servers (actual use may be somewhat higher).
175
176c_count - number of clients expected
177c_q - number of bytes buffered for each client
178s_count - number of servers expected
179s_q - number of bytes buffered for each server
180
181buffer count = (2 * (c_count * c_q + s_count * s_q)) / kernel buffer size
182
183If the client count is 2000 and the server count is 1 (normal leaf)
184and your server uses 2K as an I/O buffer size:
185
186You need (2 * (2000 * 2048 + 1 * 65536)) / 2048 or a minimum of 4064
187buffers available, if the kernel uses 512 byte buffers you will need a
188minimum of 16256 kernel buffers.
189
190These settings may be a bit light for net-breaks under full client
191load you will need to experiment a bit to find the right settings for
192your server.
193
194FreeBSD --WildThang
195
196You may want to increase your kernel resources if you want to put a
197lot of clients on your machine here are a few values to start with:
198
199CHILD_MAX=4096
200OPEN_MAX=4096
201FD_SETSIZE=4096
202NMBCLUSTERS=8096
203
204If you have trouble connecting *out* from your machine try:
205 sysctl -w net.inet.ip.portrange.last=10000
206
207Solaris 2.6 --Tar
208
209Increase the default hard limit for file descriptors in /etc/system:
210
211set rlim_fd_max = 4096
212
213The server will raise the soft limit to the hard limit.
214
215Linux 2.2 -- [Tri]/Isomer
216
217The kernel has a kernel destination cache size of 4096. If the kernel
218sees more than 4096 IP's in 60s it warns 'dst cache overflow'. This
219limit can be changed by modifying /proc/sys/net/ipv4/route/max_size.
220
221A patch to select is also recommended if you have regular poll/select
222errors.