Skip to content

Commit

Permalink
interfaces: lower MTU via tracked interface MTU; closes #2643
Browse files Browse the repository at this point in the history
(cherry picked from commit 78662d7)
  • Loading branch information
fichtner committed Sep 19, 2018
1 parent 22d57a0 commit 868d429
Showing 1 changed file with 26 additions and 4 deletions.
30 changes: 26 additions & 4 deletions src/etc/inc/services.inc
Expand Up @@ -140,13 +140,25 @@ function services_radvd_configure($blacklist = array())

$radvdifs[$realif] = 1;

$mtu = legacy_interface_stats($realif)['mtu'];

if (isset($config['interfaces'][$dhcpv6if]['track6-interface'])) {
$realtrackif = get_real_interface($config['interfaces'][$dhcpv6if]['track6-interface'], 'inet6');

$trackmtu = legacy_interface_stats($realtrackif)['mtu'];
if (!empty($trackmtu)) {
if ($trackmtu < $mtu) {
$mtu = $trackmtu;
}
}
}

$radvdconf .= "# Generated for DHCPv6 Server $dhcpv6if\n";
$radvdconf .= "interface {$realif} {\n";
$radvdconf .= sprintf("\tAdvSendAdvert %s;\n", !empty($dhcpv6ifconf['ranosend']) ? 'off' : 'on');
$radvdconf .= sprintf("\tMinRtrAdvInterval %s;\n", !empty($dhcpv6ifconf['ramininterval']) ? $dhcpv6ifconf['ramininterval'] : '200');
$radvdconf .= sprintf("\tMaxRtrAdvInterval %s;\n", !empty($dhcpv6ifconf['ramaxinterval']) ? $dhcpv6ifconf['ramaxinterval'] : '600');
$mtu = legacy_interface_stats($realif)['mtu'];
$radvdconf .= "\tAdvLinkMTU ". (is_numeric($mtu) ? $mtu : 1280) .";\n";
$radvdconf .= sprintf("\tAdvLinkMTU %s;\n", !empty($mtu) ? $mtu : 1280);

switch($dhcpv6ifconf['rapriority']) {
case "low":
Expand Down Expand Up @@ -296,14 +308,24 @@ function services_radvd_configure($blacklist = array())
$autotype = $config['interfaces'][$trackif]['ipaddrv6'];
}

$realtrackif = get_real_interface($trackif, 'inet6');

$mtu = legacy_interface_stats($realif)['mtu'];
$trackmtu = legacy_interface_stats($realtrackif)['mtu'];
if (!empty($trackmtu)) {
if ($trackmtu < $mtu) {
$mtu = $trackmtu;
}
}

$dnslist = array();
$subnetv6 = '::';
$ifcfgsnv6 = '64';

$ifcfgipv6 = get_interface_ipv6($if);

if ($autotype == 'slaac') {
/* XXX this may be incorrect and needs an override or revisit */
$subnetv6 = '2000::';
} elseif (is_ipaddrv6($ifcfgipv6)) {
$ifcfgsnv6 = get_interface_subnetv6($if);
Expand All @@ -325,11 +347,11 @@ function services_radvd_configure($blacklist = array())
$radvdconf .= "\tAdvSendAdvert on;\n";
$radvdconf .= "\tMinRtrAdvInterval 3;\n";
$radvdconf .= "\tMaxRtrAdvInterval 10;\n";
$radvdconf .= "\tAdvLinkMTU ". (is_numeric($mtu) ? $mtu : 1280) .";\n";
$radvdconf .= sprintf("\tAdvLinkMTU %s;\n", !empty($mtu) ? $mtu : 1280);
$radvdconf .= "\tAdvOtherConfigFlag on;\n";
$radvdconf .= "\tprefix {$subnetv6}/{$ifcfgsnv6} {\n";
if ($autotype == 'slaac') {
$realtrackif = get_real_interface($trackif, 'inet6');
/* XXX also of interest in the future, see hardcoded prefix above */
$radvdconf .= "\t\tBase6Interface $realtrackif;\n";
$radvdconf .= "\t\tDeprecatePrefix on;\n";
}
Expand Down

0 comments on commit 868d429

Please sign in to comment.