IRCHelper.co.uk
Please note: This information is *not* guaranteed 100% correct - please email me any errors.

Chex IRC Home
Up


How the ircd.conf file works

I know the chex standard ircd is not 100% compatible with the dalnet IRCD, but this page conatins a lot of good basic information contains a lot of good info on programming the ircd.conf file that is appropriate for us to use.


-- ircd.conf Programming -- (written for DALnet release ircd) v1.01 by Roddy Vagg -- <roddy@dal.net>  (Modified by Capt for chex.co.uk).

1) ............................. Introduction
2) ............................. ircd.conf Basics
3) ............................. ircd.conf Lines
3.1) .......................... M Lines
3.2) .......................... A Lines
3.3) .......................... Y Lines
3.4) .......................... I Lines
3.5) .......................... O Lines
3.6) .......................... U Lines
3.7) .......................... C and N Lines
3.8) .......................... K Lines
3.9) .......................... Q Lines (server form)
3.10) ......................... Q Lines (nickname form)
3.11) ......................... L Lines
3.12) ......................... H Lines
3.13) ......................... P Lines
3.14) ......................... Summary

1) Introduction:

If you are running, or planning on running an IRC server, you will need to setup an ircd.conf, your ircd.conf must meet certain requirements of the server you are linking to.   This means it must contain all the standard lines (at a minimum H, U & Q), which you will be given.

--------------------

2) ircd.conf Basics:

When you compile your server, you must specify the correct paths to where you plan on keeping your ircd.conf, for simplicity it is recommended that you keep it in the same directory as your ircd binary and other ircd files. note: You need only supply full pathnames for DPATH and SPATH, the other defines will only point to files under these directories so you need not put full path names. For security reasons, your ircd.conf should have permissions set to 600, if other users on your system gain access to view the file they may be able to breach the security of your server and compromise the whole network. When you have made your ircd.conf you may check it with the program `chkconf', this program is supplied with the source code release and will be installed into your ircd directory when you run `make install', `chkconf' will check your ircd.conf for errors so is a useful tool for beginners to ircd.conf. Your ircd.conf will be made up of a series of lines, each line is used for a different purpose in the running of your server, some lines are mandatory for ircd, so you must enter these lines or your server will not start, these lines are listed below. You may enter comments in your ircd.conf with the use of a hash mark (#) at the beginning of a line, it is recommended that you make full use of this to add comments to everything you put in your ircd.conf so you don't have any problems later. eg: Put a contact email address and the name/nick of the server admin above each C/N line pair. When ircd reads the ircd.conf file, it does it upside down, so lines with higher preference should go lower in the file, this will be explained later.

--------------------

3) ircd.conf Lines:

Each type of line in this section will be given a rating of how needed it is in the running of the server, the ratings are:

MANDATORY: you absolutely MUST have this line NETWORKED: you must have this line if plan on connecting your server to other servers. (note: you can run ircd stand alone) SUGGESTED: it is highly suggested that you use this line OPTIONAL: it's completely up to you whether to define this or not DISCOURAGED: you really really should not use this line if at all possible.

Note that "*" in a field indicates an "unused" field.

--------------------

3.1) M Lines: [MANDATORY]

This line sets your server's name, description, and port number. If you are to be a part of DALnet you will be assigned 2 different DNS entries for your ircd machine, the 1st is for general public use and involves: <servername>.DAL.net The second is for use between servers for identification, these take the form of: <servername>.[<state>].<country>.DAL.net If your server is located in the US or Australia, you will be given a `state' field in your server's real name, otherwise your `state', or `area' will not be included. Most IRC networks default to port 6667 for their client connection's, but DALnet uses port 7000 as its standard, you should compile ircd with port 7000, not 6667, but you may open up port 6667 (it is recommended that you do) with a P line (see later). Your M line's port number should be the same as the number you defined in your config.h at compile time. Syntax:M:hostname:*:Description Of Your Server:7000 The 1st field should be the `real' name of your server, not the short name. The 2nd field is unused at the moment and should be left blank. The 3rd field is your server's description, it is up to you what you put in this field, but a short description of its geographic location is recommended. The 4th field is the port number you compiled ircd with. This should be 7000 for DALnet. Example:M:disney.us.dal.net::Walt's DALnet Server:7000

--------------------

3.2) A Lines: [MANDATORY]

This line sets your server's administrative information. Whenever a user types /admin on your server (or /admin <servername>) they will recieve the information you put here. This line has no set information, so you may put arbitrary text if you like, but it is recommended that you at least put your nick and email address so users may contact you if need be.

Syntax: A:A little info about your server:Admin's nick/real name:contact address There is no fixed standard, so you may put whatever you like in each field, but you should put enough information for users to contact someone responsible for the server. 

Example:A:Disney's DALnet IRC Server:Admin - Walt Disney:walt@RIP.org

--------------------

3.3) Y Lines: [SUGGESTED]

These lines define connection classes. They allow you to fine-tune your incoming and outgoing connections, both server and client types. These classes are for use with C, N, I and O lines, more on this in later sections. DALnet has a set of Y lines that each server must use for their server connections, these are listed below and again at the bottom of this document. Client connection classes are your responsibility, you must make up your own set of Y lines for client connections based on your own situation (netwise location, machine, etc). Connection classes define a number of parameters for connections, these include: o Ping frequency of a silent connection. o Connect frequency (for server connections only!).  Maximum number of links allowed on the specific connection class. o Maximum sendq allowed for the connection before it is dropped. Your Y line numbers are not arbitraty. For server connection classes, the higher the class number, the higher the priority the connection's are given when auto-connecting, (see C/N lines below). - Ping frequency: When a connection is silent for this period of time the server will send a PING to the connection, if the client/server on the connection does not reply after a set period of time, the connection will be dropped. A value in this field will override the ping frequency defined at compile time in your config.h. For server connection classes, you should have the same ping frequency on both ends of the link, so you should stick with the standard DALnet classes. - Connect frequency: Since clients connect to servers and NOT the other way around, only server connection classes need to have a connect frequency. Client classes should have this field set to 0. When a server listed in the server's ircd.conf (see C/N lines) is missing and belongs on a connection class that is holding less connections that defined by the max links field, the server will keep on trying to connect to the missing server. The amount time between connection attempts is what you define in this field. example: server1 and server2 are listed in server0's ircd.conf but the only visible server to server0 is server1, both server1 and server2 are in server0's ircd.conf on the same connection class that allows for `2' links, server0 will go looking for server2 and try to connect to it each `connect frequency' seconds until the server becomes visible again, either by direct connection to server0, or by connection to server1 - Maximum number of links: Each Y line should have a restriction on the number of connections allowed on the class. For client connections, when the limit is reached on a particular class, connecting clients trying to connect through this class are rejected. A server connecting on a `full' connection class will be allowed as this number on server connection classes is used for auto-connect purposes. As shown in the above example, when a missing server is listed for a particular connection class, and the class is not `full', your server will try and connect to this server until it becomes visible again. Servers being connected manually on a `full' connection class via the /connect command will be allowed as long as you compiled with MAXIMUM_LINKS high enough to accommodate all of your server connections. (you must compile as a HUB if you wish to hold more than one server connection, also see H lines later in this document). - Maximum sendq: SendQ defines the `queue' of data waiting to be sent to the client/server on the other end of the connection. SendQ's will build up if the client requests more data than the link can handle, say if they issue the /list command on a network with a lot of channels and they are only on a 14.4K link, their sendq on the server will build up as all the data cannot be sent at once, the sendq size will decrease as the data is sent, and increase as more data is requested. Clients will normally sit with a sendq of 0, it is `abnormal' for a sendq to be high for a client for a long period of time. When 2 servers connect, they must send their own data to each other, this data includes: all the users on the server and already connected servers, channels, user modes, channel modes, topics (DALnet only) etc. When there are many clients on a particular side of the connection, a sendq will build up, especially if the link is slow, or already congested (example: the link from Australia to the US). When the sendq built up reaches the max sendq defined in the connection class for the particular client/server, the connection will be dropped. If max sendq's are particularly high, it will allow clients/server to take up excess memory on the ircd machine so a limit should be placed, especially on client connection classes. (IMPORTANT!) If any value of max sendq defined in a connection class exceeds the value defined at compile time in your config.h, the sendq value will default back to the compile time sendq. If your sendq field in a Y line is empty, the class will use the default defined in your config.h SendQ's for all connections on your server can be viewed with the /stats l <servername> command, this will show information for all your server's current links. You should have a set of standard server connection classes, at least one client connection class, and an Operator class. (see relevant parts of this document for notes on each of these)

Syntax: Y:Class #:Ping frequency:Connect frequency:Max links:Max sendq

Examples:Y:1:90:0:20:10000 In this case, connect-frequency is 0 indicating that this is a client class (servers never connect to clients, it is the other way around). Clients may only idle for 90 seconds before being pinged by the server. The number of clients allowed to use this class is 20. Clients may only build up a sendq on the server of 10000 bits.

These are the standard server Y lines used on DALnet:

# Connecting a hub to a hub                  Y:20:10:300:1:3000000
# Connecting a US hub to a US leaf      Y:30:45:0:0:2000000
# Connecting a US leaf to a US hub      Y:35:45:20:1:2000000
# Connecting a US hub to an EU leaf    Y:40:60:0:0:2200000
# Connecting an EU leaf to a US hub    Y:45:60:20:1:2200000
# Connecting a US hub to an AU leaf    Y:42:240:0:0:2200000
# Connecting an AU leaf to a US hub    Y:43:240:60:1:2200000

--------------------

3.4) I Lines: [MANDATORY]

These lines are the ones initially responsible for letting clients connect to your server. So called `client-authorization' lines, they define who may connect, and which connection class they will connect through. I lines, like C, N and O lines refer back to Y lines, as they allow connections, and each connection to ircd needs to be assigned to a connection class. If you dont provide a connection class, the connection will be governed by the defaults set at compile time in your config.h. When a client connects to the server, it gives its own information, this information includes username, nick and can include a password, the server then goes through its client-authorization rules (I lines) to see if the client fits any of the connection criteria. The rules for connection on the I lines are read from right to left, so if a connection is made, it is made on the right most rule it matches on the line. Also, since the ircd.conf is read upside down, the server will put the client on the lowest I line matching the client information. This means that if the 1st rule the client can connect on matches a connection class (Y line) that is `full' (see above), the client will be rejected, even if there is a line further up in the file that the client matches on that uses a connection class that has room for more clients. This means that I lines may be used in much the same fashion as K lines (see later) to block certain clients. It also means that you may place certain clients on many different connection classes. (examples later) Syntax:I:IP-address-mask:optional password:host/domain-mask::connection class (opt) Wildcards (`*') may be used in the mask fields (1 and 3) to allow for very broad connection rules. Ident (for more information on this, see rfc1413) can also be used by placing an `@' in the mask fields in the appropriate positions. If you don't want to use ident, only give the host/IP part of the connecting addresses, if you add a @ (usually used as *@), ircd will try and use ident to check the real username of the client, any connecting clients on host's that are running ident that give usernames that don't match those found by ircd will be rejected by the server. If the host is not running ident, a `~' will be placed in front of the username of the connecting client to show that the its host isn't running ident.

Examples:

I:*@*:foobar:*@*::1 This line will allow anyone from any host that uses the password "foobar" to connect through connection class 1 (Y line 1), the server will also try and use ident to verify the username of the client. Placed at the top of the I lines in your ircd.conf, this line may serve as a fall-through for connecting clients, any client that does not match any other I line but gives the password "foobar" will be able to connect through this line (If Y line 1 has space).

I:205.133.*::*.toledolink.com::1 This is a standard vanilla I: line which will permit anyone with an IP address starting with 205.133 OR with a hostname ending in .toledolink.com to connect to the server. remember, ircd uses the right-most match, so if I connect as rmiller@glass.toledolink.com (which is rmiller@205.133.127.8) I will show up on irc as rmiller@glass.toledolink.com since that is the first match it found. (Even though the second match is valid). Any clients coming through on this line will use connection class 1.

I:*@205.133.*::*@*.toledolink.com::1 Same as above, but the server will use ident. You may even specify certain usernames with ident I lines, but they will only match if their host is running ident.

I:NOMATCH::rmiller@glass.toledolink.com::1 Putting NOMATCH in the first field will stop the ircd from matching automatically against the IP address and it will force the server to match against the hostname. (the "NOMATCH" string is not mandatory, you can use any arbitrary text in the first field).

Bulk example:I:NOMATCH::*@*::1I:NOMATCH::*@*.fr::2I:NOMATCH::*@*.de::3I:NOMATCH::*@*.se::4I:NOMATCH::*@*.au::5I:129.180.*::*.une.edu.au::6 In this example, conencting clients will 1st be matched against the mask *.une.edu.au, if they match they will be placed on connection class 6 (note: if 6 is full, they will be rejected, they wont be passed on to the next I line), then tried against the IP 129.180.*, if they match, they will be placed on class 6. If the client dosen't match either of these masks, they will be tried against the mask *.au, so if they are from Australia, but are not from *.une.edu.au they will be placed on class 5. This goes on through the other lines, being placed on the various connection classes if they match any of the indicated host masks, if the client is not from the IP 129.180.*, Australia, Sweden, Germany or France, they will be connected through the final (top) I line as it serves as a fall-through, so these clients will be put on class 1.

--------------------

3.5) O Lines: [OPTIONAL]

These lines provide rules as to who may gain Operator status on your server. O lines are much like I lines in their operation and syntax. Servers need not have any Operators as ircd, given well defined connection's can perform all of its functions automatically. Server admins have the ability to `kill -HUP' the server's PID to rehash the config file, removing the need to use the /rehash command. However, a well running network such as DALnet needs operators to oversee the users of the server, and make sure users actually enjoy their time on IRC without being continually harrassed etc by troublemakers. O lines come in two forms, normal `O' lines, and Local Operator `o' lines. Normal O lines give users power over the whole network, to use commands such as /kill, local Operators only have power on their local server, that is, the server where they can use the /oper command to make themselves +o. Abilities of Operators and Local Operators can be defined in your config.h. When a user issues the /oper command to the server, the server will search through all listed O lines for a match of the user's mask, much the same way as I lines. As with I lines, you may specify the use of ident by placing an `@' in the appropriate positions. Syntax:

O:hostname:password:nickname::class See I lines for rules about the hostname and using ident. If you use ident, a client matching the hostname must have ident running on their host to be able to +o themselves. If you compiled defining oper passwords to be crypted, you must 1st crypt the plaintext using mkpasswd, a program supplied with the ircd distribution. See src/crypt/README for more information on this. The nickname is the nickname they must pass with the /oper command ie: /oper <nickname> <password> The class is the connection class to be used when the user /oper's using the O line, they connect using the standard I -- Y lines, but when they /oper succusfully they are passed across to the new Y line.

Examples:

O:RIP.org:waltspass:Walt::10 This line will allow anyone on the host RIP.org (running ident or not) to issue the command `/oper Walt waltspass', at which point they will be moved over to class 10 and be made usermode +o.

o:*@*:GiJ.E\hGyjhaW:Anyone::10 This line allows anyone who is running ident to issue the command: `/oper Anyone <password>' This line comes from an ircd that uses encrypted passwords, so the user must have the plaintext password. When this line is used with success, the user will be a Local Operator since the line only has a small `o'.

--------------------

3.6) U Lines: [OPTIONAL]

These lines define which server(s) on the network your server is connected to will be able to `hack' channel modes. On DALnet, services.dal.net is given this power, this allows the server to change modes on channels without being a channel operator, the commonly used form is ChanServ changing channel modes while not in the channels. If you are connected to a network such as DALnet that requires you to have certain U lines and you don't have them, your server will cause problems to the other servers when the server(s) that require U lines attempt to change channel modes. U lined servers also have the capability to add Akill's to your server, Akill's are much the same as the /kline command except that they show up as A: lines on /stats k.

Syntax: U:servername:*:* The last 2 fields are currently unused so you only need to give the U lined server's name.

Example: U:services.dal.net::
               U:services2.dal.net:: Both these lines are required on all DALnet server's, they allow servers with the name's `services.dal.net' and `services2.dal.net' to hack channel modes.

--------------------

3.7) C and N Lines [NETWORKED]

These lines are always used in pairs, one will not work without the other. C lines define who your server may connect to, while N lines define what servers may connect to you. When two servers connect, they both send each other the `SERVER' command, this command contains the server name and server info (set by M lines) along with this command is sent a password with the PASS command, C and N lines provide a set of rules governing the connection between servers given the details of the server and pass command's. When one a server initiates the connection, the other server will check the details of the incoming server against its N lines, if a match is found, the server will return the server and pass command's to the initiating server, which will also check its N lines for a match. For a server to initiate a connection, it must have a C line. C lines tell the server where to go to make the connection and what to send for the pass command. What this all means is that for two servers to make a complete connection, they must have both C and N lines to refer to for the other server.

Syntax: C:remote server's hostname/IP:password:remote server's name:port:classN:remote server's hostname/IP:password:remote server's name:host mask:class The remote server's hostname/IP should be the location on the internet that the server can be found. IP addresses are prefered as they are more secure, and can be a little quicker for the server. As with I and O lines, ident can be used with this 1st field to specify the username the ircd on the remote server is running from (if the remote server is running ident), to use ident with C/N lines, place the username with an @ before the hostname. The password should be crypted if you compile ircd specifying that link passwords should be crypted. Your link passwords should be very secure, as they provide more power, if hacked, than Operator passwords do. However crypted link passwords can be very akward to keep track of. Your C line password is the password used in the pass command, while your N line password will be used to check against the pass command used by incoming servers. So, your C line password should match the listed server's N line password, and your N line password should match their C line password. If you compile your ircd specifying crypted link passwords, you only need to crypt your N line passwords, use the same method as with O line passwords. If you crypt your C line passwords, your link will not work! Crypted passwords are a one sided affair, because one server crypts its N line passwords does not mean the connecting servers must crypt their C line passwords for that server. For the 3rd field, the remote servers `name' should be used, this name is the one given in that servers M line (see above). This name will be sent with the SERVER command, so it must match the one given. The C and N line pair should have the same name for this field. The 4th field of C lines may contain the remote servers connection port. Even though DALnet runs all its servers with a standard port 7000 open, server -- server connections should be taken place through port 7325. It is not mandatory that you place a port number in this field. If you don't give a port number, the server will not try and autoconnect to the listed server. If you do give a port number, the server will only try and autoconnect to the listed server if there is enough room on the connection class listed at the end of the C line (connection classes are covered in more detail above, under Y lines), and the listed server is not visible (ie: it is not connected to the network). If you don't give a port number, any /connect commands for this C line will use the default port specified in your config.h unless a port is given with the command. If you do put a port number, any /connect command's will use this port unless another port number is given with the command. The 4th field of N lines is called the `host mask', this defined how many parts of your hostname the incoming server will mask to. So, if your server's name is disney.us.dal.net, and you want the connecting server to see you as *.us.dal.net you will give a host mask of 1 in your N line. This field should normally be left blank. The 5th (last) field of both C and N lines gives the connection class to place the connection on. If your C line has a 42 in this field, and your server initiates a connection through this line, the connection will be placed on class 42, however, if You have a 42 in your C line and a 43 in your N line and an incoming server initiates a connection via this N line, the server connection will be placed on class 43. Examples: C:143.53.233.32:mypass:somewhere.fr.dal.net:7325:35N:143.53.233.32:yourpass:somewhere.fr.dal.net::35 This set will allow a server named somewhere.fr.dal.net to connect to your server if it has the IP address of 143.53.233.32 and gives a password of `yourpass'. This connection will be governed by connection class 35. If your server receives the command /connect somewhere.*, it will try and connect to the IP 143.53.233.32 through port 7325 and give the password `mypass'.

C:143.53.233.32:mypass:somewhere.fr.dal.net:7325:35N:143.53.233.32:yourpass:somewhere.fr.dal.net::35C:ircd@176.43.652.31:apass:elsewhere.jp.dal.net:7235:35N:ircd@176.43.652.31:THEpass:elsewhere.jp.dal.net::33 Both these set's will work as explained above, but if your Y line defining class 35 has `max links' set to 1, and one of these servers is connected to your server, your server will not try and autoconnect to the other since the Y line is `full', but it will accept any incomming connections from the other server and any /connect commands given for this server. If your Y line allows for more connections but your C lines do not have port numbers, your server will not try and autoconnect. Since the second set in this example has a username, ident will be used to authenticate any connections made to this server. If the listed server does not run ident, or the incomming connection comes from another username, the connection will be rejected. If a connection is made via the second set by your server, the connection will be ruled by connection class 35, if the other server initiates the connection, the connection will use class 33. Autoconnect C/N line pairs can be given prefrence over other pairs by placing them lower in your ircd.conf, the lower the line, the higher the priority when autoconnecting. Connection classes and C/N line set's allow you to refine your autoconnects to a very high degree, with practice you can have your server running so it does not need any help.

--------------------

3.8) K Lines [OPTIONAL]

These lines restric access to certain users to your server based on user@host matches and time of the day. K lines can come in 3 forms, only one of which you can specify in your ircd.conf, this type will show up as K on /stats k, the other other types are `AutoKill' which will show up as A on /stats k, and `kline' which will show up as k on /stats k. AutoKill's are set by U lined servers (see above), they act in the same way as K lines except that they are set remotly and are usually set on all servers, they dissapear when you /rehash or restart your server. klines are set via the /kline command, they operate more like AutoKill's than K lines because they also dissapear when you /rehash, or restart the server. The /kline command can be used on nicknames that appear on IRC, or you can use a user@host mask. If the /kline is done on an existing nickname, a kline will be set with that users mask and they will be killed off the server.

Syntax:K:hostmask:time/comment:username The hostmask is the host that the user will have on IRC, this may be an IP address or a standard host name. The time/comment field may either contain nothing, a set of times, or a comment. This field should not contain spaces, if you place a comment in the field, you should try and be creative in your avoidance of spaces. The syntax of time specification is: from-to[,from-to[,from-to]].... Again, you should not use spaces in this field, but you may specify as many time periods as you want/need. 24 hour time should be used, AM and PM will not work. The username will be the username that shows up on IRC. Wildcards (`*', `?') may be used with K lines in both the hostmask and username fields.

Examples:K:RIP.org::walt This will reject any user who appears as `walt@RIP.org'.

K:*.edu:0800-1200,1300-1700:* This will reject any user from any host with a top level `edu', In other words, anyone appearing as *@*.edu are banned from the server. This ban is only present during the hours of 8AM to 12AM, and again from 1PM to 5PM, at times other than this, the K line will not be active.

K:*::*rad This K line will reject anyone with the username `rad', or anything ending in `rad'. This ban will dissalow anyone using `rad' running ident or not. You must always take into account the ident character (`~') that is placed infront of usernames when their host is not running ident. If you place a K line on a username `rad' the user will be banned only if they are running ident, but if this user can turn off ident they can appear as ~rad, this will allow them to bypass any ban of username `rad'. So, wildcards should be used with usernames to take into account the ability to turn ident on and off. (The ability to change usernames can only be tackled with a `*' in the username field)

--------------------

3.9) Q Lines (server form) [DISCOURAGED]

Server form Q lines on DALnet servers are used to disallow operators on certain servers to use commands such as remote /kill's, and remote /connects, this will effectively restrict the operators on the server to local operator privileges. These lines are usually only used for `test' server situations. If a server isn't officially part of DALnet, they may be temporarily linked and Q lined, this means the server can be tested while not posing a threat to the rest of DALnet. Q lines need only be placed on the hub connecting the `test' server.

Syntax: Q:*:*:servername The 1st 2 fields are currently unused. A Q line placed on a hub connected to the named server will disallow operators on the server to affect other DALnet users/servers.

Example: Q:::test-server.my.dal.net Q line a server with the name `test-server.my.dal.net'.

--------------------

3.10) Q lines (nickname form) [OPTIONAL]

Nickname form Q lines have the ability to deny certain nicknames to users. If a nickname is Q lined, the only people allowed to use those nicknames are Operators. Q lines, like most other things in your ircd.conf, are local only, for a nickname to be Q lined on a whole network all servers must have a Q line for that nick. Q lines may also contain comments, these comments are given to the user when they attempt to use the nickname and are asked to choose another.

Syntax: Q:*:reason why nick is quarantined:nickname The 1st field is currently unused. The 2nd field is the comment sent to any user attempting to use the nickname. Unlike K lines, you may use spaces. The last field is the nickname to be quarantined, this nickname may contain wildcards.

Examples:Q::No nicknames on MY server!:* This Q line will dissalow any nicknames on the server giving the reason: No nicknames on MY server! Only Operators will be allowed to use any nicknames, but since you must be a user before you can be +o, you will effectively ban everyone from your server.

Q::Do not use the Lords name in vain!:God Anyone attempting to use the nickname `God' on your server will be told that they must find a new nickname and will be given the reason: Do not use the Lords name in vain!

DALnet has a set of standard Q lines that should be in place on all server's. They are as follows:

Q::Reserved for services:*Chan*S*rv*
Q::Reserved for services:*Nick*S*rv*
Q::Reserved for services:*Memo*S*rv
Q::Reserved for services:*Oper*S*rv*
Q::Reserved for services:*Help*S*rv*
Q::Reserved for operators:DALnet
Q::Reserved for operators:IRC*op*
Q::Causes problems with mIRC:Status

--------------------

3.11) L Lines [OPTIONAL/NETWORKED]

These lines specify which servers are to behave as leaves, that is, servers that may not have any other servers connected to them. They will only be usefull if your server is a non-leaf (hub) server. Not only can you limit servers to leaves, but you can also specify what tree depth may appear after certain servers. If a server connects but tells your server that it has a larger tree depth behind it than is allowed via your L line for the server, the server will be rejected. A limit of `0' will mean the server may only be a leaf. A limit of `1' will mean that only leaf servers may be connected to the L lined server when it is connected to your server. You may also use L lines to restrict what servers may connect to certain servers while they are connected to your server.

Syntax:L:hostmask of disallowed servers:*:server name:depth The 1st field defines the limitations on servers allowed to connect to the L lined server by hostmask. If any server connects to the L lined server while it is connected to your server, and it's name matches the hostmask given here, it will be rejected. Wildcards are allowed. You do not need to put a value in this field. The 2nd field is currently unused and should be left blank. The 3rd field is the name of the server to be L lined, when this server connects to your server, the restrictions defined by the L line are placed on this server. Wildcards are allowed. The 4th field defines the depth of servers allowed to be connected behind the L lined server.

Examples:L:::leaf.de.dal.net This line will allow a server named `leaf.de.dal.net' to connect only as a leaf. So this server may not connect any other servers behind it.

L:::semi-hub.sg.dal.net:1 This line will force the server named `semi-hub.sg.dal.net' to allow only leaf servers to connect behind it. ie: to have a tree depth of 1.

L:*.us.dal.net::*.au.dal.netL:*.eu.dal.net::*.au.dal.net These lines will make sure that any server with a name matching *.au.dal.net will not introduce any servers matching *.us.dal.net or *.eu.dal.net. This can be usefull for stopping certain hubs from letting its autoconnects route the network badly.

--------------------

3.12) H Lines [OPTIONAL/NETWORKED]

These lines are similar to L lines, except that they define what servers may act as a hub while connected to you. That is, which servers may introduce other servers behind them. You may limit what servers may be connected behind the H lined server.

Syntax:H:servers which are allowed behind the hub:*:hub servername The 1st field defines what servernames the H lined server is allowed to introduce. Wildcards are allowed. The 2nd field is currently unused and should be left blank. The 3rd field should be the exact name of the server allowed to be a hub while connected to you. You may not use wildcards with this field unless the server's name includes a `*' (See N lines for host masking).

Examples:H:*::dal-hub.us.dal.net This line will allow the server with the name `dal-hub.us.dal.net' to act as a hub server while you are connected to it, there are no restrictions on the names of the servers it may introduce.

H:*.us.dal.net::usa-hub.us.dal.net This line will allow the server named `usa-hub.us.dal.net' to act as a hub while your server is connected to it, but it is limited to introducing servers with names matching `*.us.dal.net', so any servers trying to connect to `usa-hub.us.dal.net' with a name such as `bad-link.nz.dal.net' will be rejected by your server.

--------------------

3.13) P lines [OPTIONAL]

These lines will open up ports other than the port you specified in your config.h when you compiled your ircd. Using internet domain ports below 1024 mean that you must run ircd from inetd. ircd can listen to ports in the UNIX domain as well as the internet domain. With UNIX domain ports you must give a unix socket file, you must also compile ircd with UNIXPORT defined in your config.h. You may limit usage of ports in the internet domain to certain hostmasks. You do not need to provide a P line for the default port you defined in your config.h, only extra ports you wish to open. You should compile ircd to run from port 7000, but it is recomended that you add a P line for port 6667 as most IRC clients default to this port when connecting. If you are connected to DALnet, you should have a P line for port 7325, this is the standard server connection port for all DALnet servers.

Syntax: P:hostmask or UNIX socket file:*:*:port number The 1st field should either specify a path to a UNIX socket file, or give a hostmask to match against connecting clients on this port. Clients not matching this mask will be rejected. The 2nd and 3rd field's are currently unused, and should be left blank. The last field is the port number to open up and listen to for connections.

Examples: P:*:::7325 This will open up the DALnet server connection port and wait for connections. This line is mandatory if you run a server connected to DALnet

P:*.net:::6665 This line will open up port 6665 and wait for connections, connections from hosts not matching `*.net' will be rejected.

P:/tmp/.ircd:*:*:6666 This line will open up the port 6666 in the UNIX domain, with a socket file of: /tmp/.ircd.

NOTE: on chex its very important to put your IP as the first parameter i.e.  P:216.74.72.100:::7000  (use the IP assigned to your account)

 

Extra lines used by Chex servers

B:hostmask:::#     This is the clone detector.

--------------------

3.14) Summary:

Well, that's it for the lines you may use in your ircd.conf. Remember that ircd.conf is an art, just like any other type of programming. Some parts are particularly easy, but other's, like Y lines, can take a while to get used to. Given a little time experimenting with lines on a network of servers, you will become well versed in ircd.conf programming.

Good luck!