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