-# configuration file. Feature lines are the hook we're using for this.
-#
-# F:<key>:<value>[:<value>[...]]
-#
-# Currently, the only defined value for <key> is "LOG," and it allows you
-# to customize the settings of the logging architecture. You can set the
-# default logging facility to, say, local7 (F:LOG:LOCAL7), or set a log
-# file for one of the subsystems (F:LOG:GLINE:FILE:gline.log). More than
-# one subsystem can log to the same file without danger of interleaving.
-#
-# The currently defined subsystems are SYSTEM, CONFIG, OPERMODE (used by
-# /opmode and /clearmode), GLINE, JUPE, WHO (used by /whox), NETWORK
-# (connects and disconnects), OPERKILL, SERVKILL, USER, OPER, OPERLOG,
-# USERLOG, RESOLVER, SOCKET, DEBUG, and OLDLOG. You can set log files
-# for these subsystems to log to, or you can tell them to syslog their
-# data, or even send server notices. You can do any of these in
-# combination, but you can't log to more than one file. You can also set
-# minimum log levels per subsystem, if you wish.
-#
-# The format for LOG Feature lines is as follows:
-#
-# F:LOG:<facility>
-# F:LOG:<subsystem>:<type>[:<value>]
-#
-# The first sets the default facility for ircu to log to to <facility>.
-# Valid <facility> values are listed in the syslog(3) man page; just
-# remove the "LOG_" prefix.
-#
-# The list of subsystems is given above. The valid values for <type> are
-# FILE, FACILITY, SNOMASK, and LEVEL, which respectively set the log file,
-# the syslog facility, a server notice mask value, and the minimum log
-# level. If no <value> is given, or if <value> is empty, the default
-# value for that type is set.
-#
-# Valid <value>'s for the FACILITY type are the normal syslog values (with
-# the "LOG_" prefix removed) or the special values "NONE" (which specifies
-# that syslogging should not be attempted) and "DEFAULT" (which specifies
-# that the server-wide facility should be used); the default for all
-# subsystems is "NONE."
-#
-# Valid <value>'s for the SNOMASK type are OLDSNO, SERVKILL, OPERKILL,
-# HACK2, HACK3, UNAUTH, TCPCOMMON, TOOMANY, HACK4, GLINE, NETWORK,
-# IPMISMATCH, THROTTLE, OLDREALOP, and CONNEXIT, as well as the special
-# values NONE, which specifies that no server notices should be sent,
-# and DEBUG, which is only available if DEBUGMODE has been enabled.
-#
-# Valid <value>'s for the LEVEL type are CRIT, ERR, WARNING, NOTICE,
-# TRACE, INFO, and DEBUG. Note that logs with level CRIT always result
-# in server notices to mask SNO_OLDSNO, and logs with level DEBUG always
-# send server notices to mask SNO_DEBUG.
-#
-# A couple of things to note: log settings are not reset to defaults prior
-# to a rehash; this means that if you delete F-lines and rehash, logs will
-# continue going to the same place. Also, all subsystems are defaulted to
-# minimum log level INFO (or DEBUG if DEBUGMODE is #define'd).
-
-#
-# Well, you have now reached the end of this sample configuration file
-# If you have any questions, feel free to mail <doco-com@undernet.org>
-# or <coder-com@undernet.org>.
-# If you are interested in linking your server to the Undernet IRC network
-# visit http://www.routing-com.undernet.org/, and if there are any problems
-# then contact <routing-com@undernet.org> asking for information.
-# Upgrades of the Undernet ircd can be found on http://coder-com.undernet.org/.
+# configuration file. Features let you configure these at runtime.
+# You only need one feature block in which you use
+# "featurename" = "value1" , "value2", ..., "valuen-1", "valuen";
+#
+# The entire purpose of F:lines are so that you do not have to recompile
+# the IRCD everytime you want to change a feature. All of the features
+# are listed below, and at the bottom is how to set logging.
+#
+# A Special Thanks to Kev for writing the documentation of F:lines. It can
+# be found at doc/readme.features and the logging documentation can be
+# found at doc/readme.log. The defaults used by the Undernet network are
+# below.
+#
+features
+{
+# These log features are the only way to get certain error messages
+# (such as when the server dies from being out of memory). For more
+# explanation of how they work, see doc/readme.log.
+ "LOG" = "SYSTEM" "FILE" "ircd.log";
+ "LOG" = "SYSTEM" "LEVEL" "CRIT";
+# "DOMAINNAME"="<obtained from /etc/resolv.conf by ./configure>";
+# "RELIABLE_CLOCK"="FALSE";
+# "BUFFERPOOL"="27000000";
+# "HAS_FERGUSON_FLUSHER"="FALSE";
+# "CLIENT_FLOOD"="1024";
+# "SERVER_PORT"="4400";
+# "NODEFAULTMOTD"="TRUE";
+# "MOTD_BANNER"="TRUE";
+# "KILL_IPMISMATCH"="FALSE";
+# "IDLE_FROM_MSG"="TRUE";
+# "HUB"="FALSE";
+# "WALLOPS_OPER_ONLY"="FALSE";
+# "NODNS"="FALSE";
+# "RANDOM_SEED"="<you should set one explicitly>";
+# "DEFAULT_LIST_PARAM"="TRUE";
+# "NICKNAMEHISTORYLENGTH"="800";
+# "NETWORK"="UnderNet";
+# "HOST_HIDING"="FALSE";
+# "HIDDEN_HOST"="users.undernet.org";
+# "HIDDEN_IP"="127.0.0.1";
+# "KILLCHASETIMELIMIT"="30";
+# "MAXCHANNELSPERUSER"="10";
+# "NICKLEN" = "12";
+# "AVBANLEN"="40";
+# "MAXBANS"="30";
+# "MAXSILES"="15";
+# "HANGONGOODLINK"="300";
+# "HANGONRETRYDELAY" = "10";
+# "CONNECTTIMEOUT" = "90";
+# "MAXIMUM_LINKS" = "1";
+# "PINGFREQUENCY" = "120";
+# "CONNECTFREQUENCY" = "600";
+# "DEFAULTMAXSENDQLENGTH" = "40000";
+# "GLINEMAXUSERCOUNT" = "20";
+# "MPATH" = "ircd.motd";
+# "RPATH" = "remote.motd";
+# "PPATH" = "ircd.pid";
+# "TOS_SERVER" = "0x08";
+# "TOS_CLIENT" = "0x08";
+# "POLLS_PER_LOOP" = "200";
+# "IRCD_RES_TIMEOUT" = "4";
+# "IRCD_RES_RETRIES" = "2";
+# "AUTH_TIMEOUT" = "9";
+# "IPCHECK_CLONE_LIMIT" = "4";
+# "IPCHECK_CLONE_PERIOD" = "40";
+# "IPCHECK_CLONE_DELAY" = "600";
+# "CHANNELLEN" = "200";
+# "CONFIG_OPERCMDS" = "FALSE";
+# "OPLEVELS" = "TRUE";
+# "ZANNELS" = "TRUE";
+# "LOCAL_CHANNELS" = "TRUE";
+# "ANNOUNCE_INVITES" = "FALSE";
+# These were introduced by Undernet CFV-165 to add "Head-In-Sand" (HIS)
+# behavior to hide most network topology from users.
+# "HIS_SNOTICES" = "TRUE";
+# "HIS_SNOTICES_OPER_ONLY" = "TRUE";
+# "HIS_DEBUG_OPER_ONLY" = "TRUE";
+# "HIS_WALLOPS" = "TRUE";
+# "HIS_MAP" = "TRUE";
+# "HIS_LINKS" = "TRUE";
+# "HIS_TRACE" = "TRUE";
+# "HIS_STATS_a" = "TRUE";
+# "HIS_STATS_c" = "TRUE";
+# "HIS_STATS_d" = "TRUE";
+# "HIS_STATS_e" = "TRUE";
+# "HIS_STATS_f" = "TRUE";
+# "HIS_STATS_g" = "TRUE";
+# "HIS_STATS_i" = "TRUE";
+# "HIS_STATS_j" = "TRUE";
+# "HIS_STATS_J" = "TRUE";
+# "HIS_STATS_k" = "TRUE";
+# "HIS_STATS_l" = "TRUE";
+# "HIS_STATS_L" = "TRUE";
+# "HIS_STATS_m" = "TRUE";
+# "HIS_STATS_M" = "TRUE";
+# "HIS_STATS_o" = "TRUE";
+# "HIS_STATS_p" = "TRUE";
+# "HIS_STATS_q" = "TRUE";
+# "HIS_STATS_r" = "TRUE";
+# "HIS_STATS_R" = "TRUE";
+# "HIS_STATS_t" = "TRUE";
+# "HIS_STATS_T" = "TRUE";
+# "HIS_STATS_u" = "FALSE";
+# "HIS_STATS_U" = "TRUE";
+# "HIS_STATS_v" = "TRUE";
+# "HIS_STATS_w" = "TRUE";
+# "HIS_STATS_x" = "TRUE";
+# "HIS_STATS_y" = "TRUE";
+# "HIS_STATS_z" = "TRUE";
+# "HIS_STATS_IAUTH" = "TRUE";
+# "HIS_WHOIS_SERVERNAME" = "TRUE";
+# "HIS_WHOIS_IDLETIME" = "TRUE";
+# "HIS_WHOIS_LOCALCHAN" = "TRUE";
+# "HIS_WHO_SERVERNAME" = "TRUE";
+# "HIS_WHO_HOPCOUNT" = "TRUE";
+# "HIS_MODEWHO" = "TRUE";
+# "HIS_BANWHO" = "TRUE";
+# "HIS_KILLWHO" = "TRUE";
+# "HIS_REWRITE" = "TRUE";
+# "HIS_REMOTE" = "TRUE";
+# "HIS_NETSPLIT" = "TRUE";
+# "HIS_SERVERNAME" = "*.undernet.org";
+# "HIS_SERVERINFO" = "The Undernet Underworld";
+# "HIS_URLSERVERS" = "http://www.undernet.org/servers.php";
+# "URLREG" = "http://cservice.undernet.org/live/";
+};
+
+# Well, you have now reached the end of this sample configuration
+# file. If you have any questions, feel free to mail
+# <coder-com@undernet.org>. If you are interested in linking your
+# server to the Undernet IRC network visit
+# http://www.routing-com.undernet.org/, and if there are any
+# problems then contact <routing-com@undernet.org> asking for
+# information. Upgrades of the Undernet ircd can be found on
+# http://coder-com.undernet.org/.