ircd: server connection configuration

Fix the server connection configuration so that it can simultaneously
handle a hostname/IPv4/IPv6 for connecting and a hostname/IPv4/IPv6
for binding. Maintains backwards compatibility for matching a hostname
with a mask.

Multiple host/vhost entries can be specified and the last value for
each address family is stored. Hostnames that resolve automatically
overwrite the IP address.

Server connections can now be made to either IPv4 or IPv6 at random
as well as preferring a specific address family.
This commit is contained in:
Simon Arlott 2016-04-24 17:05:05 +01:00
parent 65f43a4fc4
commit d4214e9445
No known key found for this signature in database
GPG key ID: C8975F2043CA5D24
9 changed files with 248 additions and 121 deletions

View file

@ -310,10 +310,6 @@ connect "irc.uplink.com" {
flags = compressed, topicburst;
#fingerprint = "c77106576abf7f9f90cca0f63874a60f2e40a64b";
/* If the connection is IPv6, uncomment below.
* Use 0::1, not ::1, for IPv6 localhost. */
#aftype = ipv6;
};
connect "ssl.uplink.com" {
@ -454,7 +450,7 @@ opm {
* to be effective.
* If omitted, it defaults to serverinfo::vhost6.
*/
#listen_ipv6 = "0::1";
#listen_ipv6 = "::1";
/* IPv6 port to listen on.
* This should not be the same as any existing listeners.

View file

@ -571,17 +571,14 @@ connect "irc.uplink.com" {
};
connect "ipv6.lame.server" {
/* Hosts that are IPv6 addresses must be in :: shortened form
* if applicable. Addresses starting with a colon get an extra
* zero prepended, for example: 0::1
*/
host = "192.0.2.1";
host = "2001:db8:3::8";
send_password = "password";
accept_password = "password";
port = 6666;
/* aftype: controls whether the connection uses "ipv4" or "ipv6".
* Default is ipv4.
/* aftype: controls whether the outgoing connection uses "ipv4" or "ipv6".
* Default is to try either at random.
*/
aftype = ipv6;
class = "server";
@ -930,7 +927,7 @@ opm {
* to be effective.
* If omitted, it defaults to serverinfo::vhost6.
*/
#listen_ipv6 = "0::1";
#listen_ipv6 = "::1";
/* IPv6 port to listen on.
* This should not be the same as any existing listeners.

View file

@ -105,7 +105,7 @@ serverinfo {
<term>vhost</term>
<listitem>
<para>
An optional text field which defines an IP from which to connect outward to other IRC servers.
An optional text field which defines an IPv4 address from which to connect outward to other IRC servers.
</para>
</listitem>
</varlistentry>
@ -113,7 +113,7 @@ serverinfo {
<term>vhost6</term>
<listitem>
<para>
An optional text field which defines an IPv6 IP from which to connect outward to other IRC servers.
An optional text field which defines an IPv6 address from which to connect outward to other IRC servers.
</para>
</listitem>
</varlistentry>
@ -599,10 +599,6 @@ connect "<replaceable>name</replaceable>" {
Furthermore, if a hostname is used, it must have an A or AAAA
record (no CNAME) and it must be the primary
hostname for inbound connections to work.
</para><para>
IPv6 addresses must be in :: shortened form; addresses which
then start with a colon must be prepended with a zero,
for example 0::1.
</para></note>
</listitem>
</varlistentry>
@ -662,7 +658,7 @@ connect "<replaceable>name</replaceable>" {
<varlistentry>
<term>aftype</term>
<listitem>
<para>The protocol that should be used to connect with, either ipv4 or ipv6. This defaults to ipv4 unless host is a numeric IPv6 address.</para>
<para>The protocol that must be used to connect with, either ipv4 or ipv6. This defaults to neither, allowing connection using either address family.</para>
</listitem>
</varlistentry>
</variablelist>