Hi I have added a support of "netmask" directive for IPv6 to ldirectord. Any comments are appreciated. Thank you.
# HG changeset patch # User Sohgo Takeuchi <sohgo@xxxxxxxxxxxxxxxx> # Date 1297506755 -32400 # Node ID 8243bbc2ffa24847833c30248c5edf934f970cb2 # Parent b52fa171ccaeb9565ea4d96ea583a0a67c7122a7 add a support of "netmask" directive for IPv6 diff --git a/ldirectord/ldirectord.in b/ldirectord/ldirectord.in --- a/ldirectord/ldirectord.in +++ b/ldirectord/ldirectord.in @@ -659,9 +659,11 @@ Number of seconds for persistent client connections. -B<netmask => I<w.x.y.z> +B<netmask => I<w.x.y.z> | I<prefixlen> Netmask to be used for granularity of persistent client connections. +IPv4 netmask should be specified in dotted quad notation. +IPv6 netmask should be specified as a prefix length between 1 and 128. B<protocol = tcp> | B<udp> | B<fwm> @@ -1456,8 +1458,17 @@ $1 =~ /(\d+)/ or &config_error($line, "invalid persistent timeout"); $vsrv{persistent} = $1; } elsif ($rcmd =~ /^netmask\s*=\s*(.*)/) { - $1 =~ /(\d+\.\d+\.\d+\.\d+)/ or &config_error($line, "invalid netmask"); - $vsrv{netmask} = $1; + my $val = $1; + if ($vsrv{addressfamily} == AF_INET6) { + if ($val !~ /^\d+$/ or ($val < 1 || $val > 128)) { + &config_error($line, "invalid netmask: a prefix length between 1 and 128 is required"); + } + } else { + if ($val !~ /^\d+\.\d+\.\d+\.\d+$/) { + &config_error($line, "invalid netmask: dotted quad notation is required"); + } + } + $vsrv{netmask} = $val; } elsif ($rcmd =~ /^protocol\s*=\s*(.*)/) { if ( $1 =~ /(\w+)/ ) { if ( $vsrv{protocol} eq "fwm" ) {