Merge branch 'u2_10_12_branch' of git://git.code.sf.net/p/undernet-ircu/ircu2
[ircu2.10.12-pk.git] / doc / readme.features
diff --git a/doc/readme.features b/doc/readme.features
new file mode 100644 (file)
index 0000000..de1b332
--- /dev/null
@@ -0,0 +1,896 @@
+Many of the old compile-time options are now configured through the
+server configuration file, ircd.conf.  This file is intended to
+document each of these features.  Logging, although also configured
+through the use of Feature entries, is documented in doc/readme.log.  NOTE
+THAT THESE NAMES ARE CASE SENSITIVE!  Values are not case sensitive
+unless stated otherwise in the documentation for that feature.
+
+DOMAINNAME
+ * Type: string
+ * Default: picked by ./configure from /etc/resolv.conf
+
+This option allows you to specify what you consider to be "local."  It
+is only used for statistics.  When you issue the IRC command /STATS w,
+the server will respond with statistics of how many clients have been
+connecting to your server in the last minute, hour and day.  It will
+give these statistics for all connections (including the servers), all
+clients (from anywhere) and also for clients whose hostname ends on
+the domain you specify here.  So if you are an ISP and you want to
+know what the client load from your own domain is, specify that domain
+here.  If you are unsure what to do, then it isn't really important
+what you give here, just don't give an empty string.  A good guess is
+the last two parts of your own hostname (i.e., if your hostname is
+foo.bar.nowhere.org, specify "nowhere.org").  Note that the string you
+give should NOT start with a "." and you should not use quotes.
+
+RELIABLE_CLOCK
+ * Type: boolean
+ * Default: FALSE
+
+You should really ONLY specify "TRUE" here when your system clock is
+stable and accurate at all times (within a few seconds).  If you are
+running ntpdate on a regular basis, or an equivalent like xntpd, to
+keep your system clock synchronized over the network, then you might
+have an accurate clock.  However, this is not guaranteed; for example,
+it is known that xntpd gives unstable results on Linux in some cases.
+Note that an unstable clock is worse then an clock that has a constant
+offset, because the servers attempt to correct for a constant offset,
+but do not correct jumps of your system clock!  In general you SHOULD
+be running ntpdate or equivalent AND make sure it works when you run a
+production server on Undernet.  Otherwise leave your clock alone and
+specify "FALSE" here.  If unsure specify "FALSE"!
+
+BUFFERPOOL
+ * Type: integer
+ * Default: 27000000
+
+This specifies the maximum amount of RAM that your server will
+allocate for buffering sendQs.  Small leafs can use a value as little
+as 1000000, while large HUBs need to specify a value as high as
+20000000.  If you run out of memory, clients and/or servers are
+dropped with the error "Buffer allocation error"; then you will have
+to increase this number (and install more RAM if appropriate).  If you
+want a more educated guess for this value then realize that any value
+is good if you _really_ would rather drop servers and clients than
+allocate more memory; this will be the case when there is the danger
+you may run out of memory for other allocations.  Even if you run the
+daemon on a dedicated machine, specifying all of the RAM you have is a
+bad thing, because running out of memory is a lot worse than dropping
+clients in a controlled way; if possible you should have memory left
+for all the internal structures (channels, clients, ban lists, receive
+buffers) at all times.  On average, clients seem to use 150 bytes of
+sendQ, but at peak moments this can easily increase to 2032 bytes per
+client (sendQs are allocated in chunks of 2032 bytes).  The maximum
+possible amount that can be allocated for sendQs is the number of
+connected clients times whatever you specified as the maximum sendQ in
+your Class blocks in the ircd.conf file.  That value will likely be larger
+then the amount of RAM you have.  The educated guess I talked about
+earlier would be "number of clients" times * 2048 bytes + "size of
+net.burst" * n, where "n" is 1 for leafs and up to 5 for HUBs.  The
+"size of net.burst" is about 125 bytes per online client (on the whole
+network).  For large HUBs with 4000 clients on a network with 30,000
+users, this results in 27 Mb.  Leafs could use 12 Mb.  Of course you
+can use less when you have less than 4000 local clients.  This value
+is in bytes.
+
+HAS_FERGUSON_FLUSHER
+ * Type: boolean
+ * Default: FALSE
+
+If you have a server with a lot of resources available, this option
+will cause the server to attempt to flush its internal buffers before
+dropping clients during a net break.  Don't define this if you don't
+know for certain; if you're not careful this can end up rebooting
+FreeBSD boxes.  For more information, refer to freebsd.txt, also in
+this directory.
+
+CLIENT_FLOOD
+ * Type: integer
+ * Default: 1024
+
+Currently, everything that a client sends to a server is read by the
+server and stored in a buffer (the clients receive queue).  The server
+will process messages from this queue one by one (running over all
+clients each time).  When a client sends new messages faster they get
+processed, and the size of its receive buffer reaches this value, the
+client is dropped with the error "Excess flood."  A reasonable value
+is 1024 bytes.  The maximum size is 8000 bytes.
+
+SERVER_PORT
+ * Type: integer
+ * Default: 4400
+
+When an IRC operator attempts a connect to another server, he or she
+may not know which port the connect should go to.  In this server
+version, that operator may use the special port 0, in which case the
+server will take the port from the Connect block.  If no port is
+specified in the Connect block, however, the port specified by this
+option will be used instead.
+
+NODEFAULTMOTD
+ * Type: boolean
+ * Default: TRUE
+
+Every time a client connects to your server, the full Message of the
+Day (as specified by the Motd blocks or by the file specified by the MPATH
+option) is sent to the client.  The server sends the Message of the
+Day even though many clients permit the user to ignore it.  Many users
+never read the message of the day anyway, making it a huge waste of
+bandwidth.  If you specify "TRUE" here, then the server won't send the
+MOTD to the client by default; instead, it will only tell the client
+when the MOTD was last changed, and give instructions on how to obtain
+it by typing /MOTD.
+
+MOTD_BANNER
+ * Type: string
+ * Default: NULL
+
+If you enable NODEFAULTMOTD, this specifies a one-line banner to be sent
+to the client in addition to the instructions mentioned above.
+
+PROVIDER
+ * Type: string
+ * Default: NULL
+
+This string as added to the 001 numeric prefixed with "via" before the nick.
+It's used for providing promotional space to providers as per CFV-202
+
+KILL_IPMISMATCH
+ * Type: boolean
+ * Default: FALSE
+
+When a client connects to your server, the IP address of the client is
+reverse-resolved to obtain a hostname.  Then that hostname is resolved
+to an IP address and compared with the IP address of the client.  If
+they don't match, the client will appear with the IP address instead
+of the hostname, unless KILL_IPMISMATCH is "TRUE," in which case the
+client is simply disconnected.
+
+IDLE_FROM_MSG
+ * Type: boolean
+ * Default: TRUE
+
+The IRC command WHOIS gives an idle time for clients.  If you want
+this idle time to be set to zero only when the client sends a PRIVMSG,
+then you should specify "TRUE" here.  If you specify "FALSE," then the
+idle time will be nullified on all messages except the server
+PING/PONG.
+
+HUB
+ * Type: boolean
+ * Default: FALSE
+
+All servers of an IRC "network" are connected in a "tree" (no loops).
+Servers that are only connected to one other server (called the
+"uplink") are called "leafs"; servers that are connected to more than
+one other server are called HUBs.  If you specify "FALSE" here then
+your server will prevent itself from accidentally connecting to two
+servers at once, thus keeping servers in poor network locations from
+routing traffic.  Note that on Undernet, all newly linked servers are
+linked as leafs during their test phase, and should specify "FALSE"
+here.
+
+WALLOPS_OPER_ONLY
+ * Type: boolean
+ * Default: FALSE
+
+Setting this option removes the ability for clients that are not IRC
+operators to see wallops messages.
+
+NODNS
+ * Type: boolean
+ * Default: FALSE
+
+If you are playing with the server off-line, and no DNS is available,
+then long delays occur before the server starts up because it tries to
+resolve the name given in the General block (which usually isn't given
+in /etc/hosts) and for each connecting client.  If you specify "TRUE"
+here, then a DNS lookup will be done only for the real hostname, and
+the server will not try to resolve clients that connect to
+"localhost."  Note that other DNS lookups are still done for outbound
+connections.
+
+RANDOM_SEED
+ * Type: string
+ * Default: none
+
+When a client connects, the server sends the client a "cookie,"
+consisting of a random number.  The client must return the cookie to
+the server verbatim.  This is done to prevent IP spoofing.  The cookie
+is generated by a pseudorandom number generator included in ircd.
+This generator must be seeded with a phrase that is kept secret, to
+ensure that the numbers it generates are not easily guessed.  The
+value given to RANDOM_SEED may be a string of any length.  It should
+not contain any characters that are considered special by the
+configuration file system, such as ":" or "#"; the string should be at
+least 8 characters long, but longer strings are better.  The
+RANDOM_SEED may not be retrieved online.
+
+DEFAULT_LIST_PARAM
+ * Type: string
+ * Default: none
+
+The LIST command takes a single optional argument.  If given, that
+argument is either a channel or a filter.  If that argument is not
+given, then by default, /LIST will list all channels on the network.
+Needless to say, this can generate a large amount of data on large
+networks with many channels, as well as chewing up a lot of CPU time.
+Server administrators can therefore set a default filter to be applied
+to the channel list if the optional argument to LIST is omitted.
+
+NICKNAMEHISTORYLENGTH
+ * Type: integer
+ * Default: 800
+
+This value specifies the length of the nick name history list, which
+is used for /WHOWAS and some nickname chasing in /KILL and /KICK.  It
+uses about 300 to 400 bytes per entry.  Note that at a net break, so
+many client disappear that the whole "whowas" list is refreshed a few
+times (unless you make it rather large).  A reasonable value is "total
+number of clients" / 25.
+
+HOST_HIDING
+ * Type: boolean
+ * Default: TRUE
+
+This selects whether local users can set umode +x, thus allowing them
+to hide their hostname if they have also registered with a channel
+service (i.e. they have the ACCOUNT flag set).
+
+HIDDEN_HOST
+ * Type: string
+ * Default: users.undernet.org
+
+This selects the suffix for the hidden hostmask (see HOST_HIDING).
+
+HIDDEN_IP
+ * Type: string
+ * Default: 127.0.0.1
+
+This selects a fake IP to be shown on /USERIP and /WHO %i when the
+target has a hidden host (see HOST_HIDING).
+
+CONNEXIT_NOTICES
+ * Type: boolean
+ * Default: FALSE
+
+This feature controls the generation of server notices when a user
+connects to or disconnects from the server.  Enabling this feature may
+have a performance impact.
+
+KILLCHASETIMELIMIT
+ * Type: integer
+ * Default: 30
+
+If a user changes his or her nickname just before an operator issues a
+/KILL, the /KILL will be changed to follow the user the operator
+intended to get.  This option specifies the time limit, in seconds,
+for this nickname change; if the user changed his or her nickname more
+than this many seconds ago, the /KILL will not be changed.  Don't
+change this unless you really need to.
+
+MAXCHANNELSPERUSER
+ * Type: integer
+ * Default: 10
+
+This is the maximum number of channels a user can be in at a time.
+The "mandatory" value on Undernet is currently 10.  Since it only
+influences the local server when you decrease it, its up to you to
+decide if you want to use a smaller value.  Do not use a larger value
+however, because it DOES cost more memory and bandwidth on all other
+servers when you allow users to join more channels simultaneously.
+One of the most important reasons to choose a smaller value is the
+fact that the "GUI" clients tend to stay on every channel they join
+(they aren't bothered by flooding in other channels).  It DOES take
+your bandwidth however to send all those messages for 10 different
+channels to all your users.
+
+AVBANLEN
+ * Type: integer
+ * Default: 40
+
+This is the expected average ban mask length.  Leave it at 40.
+
+MAXBANS
+ * Type: integer
+ * Default: 45
+
+This is the maximum number of bans a user may set on a given channel.
+
+MAXSILES
+ * Type: integer
+ * Default: 15
+
+This is the maximum number of masks a user can silence at a time.  The
+silence command allows users to filter messages directed at them from
+certain users or domains, at the source server.  Increasing this
+number allows users to use up more memory with inefficient use of the
+command.  If you're not sure, don't change this.
+
+HANGONGOODLINK
+ * Type: integer
+ * Default: 300
+
+Often the net breaks for a short time and it is useful to try to
+reestablish the same connection faster than CONNECTFREQUENCY would
+allow, but to keep from trying again on a bad connection, we require
+that the connection be open for a certain minimum time. The
+recommended value is 300 seconds.
+
+HANGONRETRYDELAY
+ * Type: integer
+ * Default: 10
+
+When attempting to quickly reestablish a connection to a good link, we
+give the net a few seconds to calm down. This time must be long enough
+for the other end to also notice that the connection is broken. The
+recommended value is 10 seconds.
+
+CONNECTTIMEOUT
+ * Type: integer
+ * Default: 90
+
+Number of seconds to wait for a connect(2) call to complete.  NOTE:
+this must be at *LEAST* 10.  When a client connects, it has
+CONNECTTIMEOUT - 10 seconds for its host to respond to an ident lookup
+query and for a DNS lookup to complete. It is recommended that you not
+change this value, but if you do, consider the fact that users whose
+clients do not support NOSPOOF will have to type /QUOTE PING <big
+number> before registration.
+
+MAXIMUM_LINKS
+ * Type: integer
+ * Default: 1
+
+This is the maximum number of links for the built-in client class 0.
+Leave this value at 1.
+
+PINGFREQUENCY
+ * Type: integer
+ * Default: 120
+
+If the daemon doesn't receive anything from any of its links within
+PINGFREQUENCY seconds, then the it will attempt to check for an active
+link with a PING message.  If no reply is received within
+(PINGFREQUENCY * 2) seconds, then the connection will be closed.  This
+value may be overridden by a Class block in "ircd.conf" if the
+connection's Client or Connect block in "ircd.conf" assigns a specific
+class to the connection (recommended).
+
+CONNECTFREQUENCY
+ * Type: integer
+ * Default: 600
+
+This is the default frequency that the server attempts to reconnect
+with its uplink server if it is set to auto connect to it. Note that
+this value is overridden by a Class block in ircd.conf if the Connect
+entries in ircd.conf assign a specific class to the connection.
+
+DEFAULTMAXSENDQLENGTH
+ * Type: integer
+ * Default: 40000
+
+This is the default value of the maximum sendQ length of connection
+classes (see doc/example.conf for details on Class blocks).  You will
+generally override this value in your "ircd.conf" with a Class block.
+
+GLINEMAXUSERCOUNT
+ * Type: integer
+ * Default: 20
+
+G-lines that affect too many users have to be set with a special
+command, to prevent accidental G-lines of large blocks of users.  This
+feature sets that particular threshold.
+
+MPATH
+ * Type: string
+ * Default: "ircd.motd"
+
+MPATH is the filename (relative to DPATH) or the full path of the
+"Message of the Day" file.  The contents of this file will be sent to
+every client that connects to the server, after registration.
+
+RPATH
+ * Type: string
+ * Default: "remote.motd"
+
+RPATH is the filename (relative to DPATH) or the full path of the
+"Remote Message of the Day" file.  The contents of this file will be
+sent to every remote client that issues a /MOTD <your server name>.
+Only the first three lines are sent, so you might want to keep that in
+mind while writing the file.
+
+PPATH
+ * Type: string
+ * Default: "ircd.pid"
+
+PPATH is the filename (relative to DPATH) or the full path of the
+"PID" file.  It is used for storing the server's process ID so that a
+ps(1) isn't necessary.
+
+TOS_SERVER
+ * Type: integer
+ * Default: 0x08
+
+This option is used to specify the type of service that will be
+requested for connections to other servers.  The value may be given as
+a hexadecimal integer.
+
+TOS_CLIENT
+ * Type: integer
+ * Default: 0x08
+
+This option is used to specify the type of service that will be
+requested for connections to users.  The value may be given as a
+hexadecimal integer.
+
+POLLS_PER_LOOP
+ * Type: integer
+ * Default: 200
+
+Some of the engines used by the event interface get a number of events
+from the kernel at once.  Since the number retrieved can impact
+performance, it can be tuned by modifying this value.  The engines
+enforce a lower limit of 20.
+
+CONFIG_OPERCMDS
+ * Type: boolean
+ * Default: FALSE
+
+Since u2.10.11, several new oper-only features have been added that
+involve changes to the server<->server protocol.  This configuration
+option provides a single switch to prevent the use of these features
+until the entire network has been upgraded.  It is not required that
+all servers set this to "TRUE" in order for the features to be used,
+as long as all servers are running u2.10.11 or above.
+
+HIS_MAP
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /MAP from users.
+
+HIS_SNOTICES
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes server notices from users.
+
+HIS_SNOTICES_OPER_ONLY
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes server notices from users.
+
+HIS_DEBUG_OPER_ONLY
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes server wallops from users.
+
+HIS_WALLOPS
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes operator wallops from users.
+
+HIS_LINKS
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /LINKS from users.
+
+HIS_TRACE
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /TRACE from users.
+
+HIS_STATS_a
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS a from users.
+
+HIS_STATS_c
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS c from users.
+
+HIS_STATS_d
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS d from users.
+
+HIS_STATS_e
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS e from users.
+
+HIS_STATS_f
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS f from users.
+
+HIS_STATS_g
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS g from users.
+
+HIS_STATS_i
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS i from users.
+
+HIS_STATS_j
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS j from users.
+
+HIS_STATS_J
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS J from users.
+
+HIS_STATS_k
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS k from users.
+
+HIS_STATS_l
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS l from users.
+
+HIS_STATS_L
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS L from users.
+
+HIS_STATS_M
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS M from users.
+
+HIS_STATS_m
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS m from users.
+
+HIS_STATS_o
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS o from users.
+
+HIS_STATS_p
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS p from users.
+
+HIS_STATS_q
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS q from users.
+
+HIS_STATS_r
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS r from users.
+
+HIS_STATS_R
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS R from users.
+
+HIS_STATS_t
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS t from users.
+
+HIS_STATS_T
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS T from users.
+
+HIS_STATS_u
+ * Type: boolean
+ * Default: FALSE
+
+As per UnderNet CFV-165, this allows users to perform /STATS u.
+
+HIS_STATS_U
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS U from users.
+
+HIS_STATS_v
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS v from users.
+
+HIS_STATS_w
+ * Type: boolean
+ * Default: FALSE
+
+As per UnderNet CFV-165, this allows users to perform /STATS w.
+
+HIS_STATS_x
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS x from users.
+
+HIS_STATS_y
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS y from users.
+
+HIS_STATS_z
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes /STATS z from users.
+
+HIS_STATS_IAUTH
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this disables /STATS IAUTH and
+/STATS IAUTHCONF from users.
+
+HIS_WHOIS_SERVERNAME
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes server names in replies to /WHOIS.
+
+HIS_WHOIS_IDLETIME
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes idle time in replies to /WHOIS.
+
+HIS_WHO_SERVERNAME
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes server names in replies to /WHO.
+
+HIS_WHO_HOPCOUNT
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this replaces hopcount to a static 3 in
+replies to /WHO.
+
+HIS_MODEWHO
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this doesn't show which server performed a channel
+mode change.
+
+HIS_BANWHO
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this doesn't show which server set a ban.
+
+HIS_KILLWHO
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this doesn't show which server or oper performed a
+kill.
+
+HIS_REWRITE
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this remaps remote numerics to come from the local
+server.
+
+HIS_REMOTE
+ * Type: integer
+ * Default: 1
+
+As per UnderNet CFV-165, this disallows remote queries. (*sob!*)
+
+HIS_NETSPLIT
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes server names in net break sign-offs.
+
+HIS_WHOIS_LOCALCHAN
+ * Type: boolean
+ * Default: TRUE
+
+As per UnderNet CFV-165, this removes local channels in replies to /WHOIS.
+
+HIS_SERVERNAME
+ * Type: string
+ * Default: "*.undernet.org"
+
+As per UnderNet CFV-165, this is the "name" of the server shown to users on a
+/WHOIS of another user.
+
+HIS_SERVERINFO
+ * Type: string
+ * Default: "The Undernet Underworld"
+
+As per UnderNet CFV-165, this is the "info" of the server shown to users on a
+/WHOIS of another user.
+
+HIS_URLSERVERS
+ * Type: string
+ * Default: "http://www.undernet.org/servers.php"
+
+As per UnderNet CFV-165, this is the URL shown to users when they do a /MAP or
+/LINKS.
+
+NETWORK
+ * Type: string
+ * Default: "UnderNet"
+
+This defines the network name as reported in the 005 "supported features"
+numeric, and as used by the "Failed to deliver" message.
+
+URL_CLIENTS
+ * Type: string
+ * Default: "ftp://ftp.undernet.org/pub/irc/clients"
+
+This defines a URL that users may visit to find compatible IRC clients.
+
+URLREG
+ * Type: string
+ * Default: "http://cservice.undernet.org/live/"
+
+This defines a URL that is used in server response 477 (ERR_NEEDREGGEDNICK) to
+let users know which website they must visit to obtain a proper account for
+authentication.
+
+NICKLEN
+ * Type: integer
+ * Default: 12
+
+This is the allowed length of the nickname length.  It may not be
+larger than the NICKLEN #define, and should usually be the same
+length.  The real purpose of this feature is to permit easy increases
+in nickname length for a network.
+
+IRCD_RES_RETRIES
+ * Type: integer
+ * Default: 2
+
+This is the number of attempts the irc daemon's resolver will have at
+trying to solicit a response from the DNS server.
+
+IRCD_RES_TIMEOUT
+ * Type: integer
+ * Default: 4
+
+When a DNS query is sent, the irc daemon's resolver will wait this many
+seconds for a reply.  After this timeout has expired, it will retry again,
+for as many retries as IRCD_RES_RETRIES allows.  This can be cut short by
+AUTH_TIMEOUT expiring.
+NOTE: Has no effect when using the adns resolver.
+
+AUTH_TIMEOUT
+ * Type: integer
+ * Default: 9
+
+This is the maximum number of seconds to wait for the ident lookup and
+the DNS query to succeed.  On older (pre 2.10.11.06) servers this was
+hard coded to 60 seconds.
+
+IPCHECK_CLONE_LIMIT
+ * Type: integer
+ * Default: 4
+
+The number of times you are allowed to connect within IPCHECK_CLONE_PERIOD
+seconds before you are considered abusing the server and throttled.
+
+IPCHECK_CLONE_PERIOD
+ * Type: integer
+ * Default: 40
+
+The number of seconds you are allowed to connect IPCHECK_CLONE_LIMIT times
+within before you are considered abusing the server and throttled.
+For instance if you set IPCHECK_CLONE_LIMIT to 1, and IPCHECK_CLONE_PERIOD
+to 10, then a user is only allowed to connect once in 10s, if they connect
+again within 10s, then they are considered to be connecting too fast and
+they are throttled.
+
+IPCHECK_CLONE_DELAY
+ * Type: integer
+ * Default: 600
+
+The number of seconds grace after restarting the server before the throttle
+code kicks in.  Even if a user connects repetitively during this period,
+they will never get throttled.  This is so after a restart users on a
+multiuser box can all connect to a server simultaniously without being
+considered an attack.
+
+SOCKSENDBUF
+ * Type: integer
+ * Default: 61440
+
+The send window size used for connections to other servers.
+
+SOCKRECVBUF
+ * Type: integer
+ * Default: 61440
+
+The receive window size used for connections to other servers.
+
+ANNOUNCE_INVITES
+ * Type: boolean
+ * Default: FALSE
+
+If set, send RPL_ISSUEDINVITE (345) to a channel's operators to
+announce when someone is invited to the channel.
+
+LOCAL_CHANNELS
+ * Type: boolean
+ * Default: TRUE
+
+If set, allow users to create local channels.
+
+TOPIC_BURST
+ * Type: boolean
+ * Default: FALSE
+
+If set, send the current topic value and timestamp for channels during
+burst.  This generally only makes sense for hubs to use, and it causes
+a large increase in net.burst size.
+
+CHANNELLEN
+ * Type: integer
+ * Default: 200
+
+This is the allowed length of locally created channels.  It may not be
+larger than the CHANNELLEN #define.  Like the NICKLEN feature, this is
+intended to ease changes in channel name length across a network.
+
+OPLEVELS
+ * Type: boolean
+ * Default: TRUE
+
+This allows local users to set the +A and +U modes (admin and user
+passwords, respectively) on channels where they are marked as channel
+managers.  This feature must be disabled until all servers on the
+network are able to interpret and handle these modes correctly.
+
+ZANNELS
+ * Type: boolean
+ * Default: TRUE
+
+This preserves empty channels with no admin password so that it is
+impractical to become the channel manager by clearing out the channel.
+It must be set to FALSE if there are both 2.10.11.x servers and
+2.10.12.y servers on the network where y < 4.  It should be set to
+TRUE whenever the OPLEVELS features is TRUE.