interfaces: override link-local tracking router address if needed

PR: https://forum.opnsense.org/index.php?topic=10034.0
This commit is contained in:
Franco Fichtner 2018-10-24 09:23:13 +00:00
parent 8c83f70f1f
commit eada2bf5a1
2 changed files with 18 additions and 2 deletions

View File

@ -2577,6 +2577,8 @@ function interface_track6_configure($interface = 'lan', $lancfg, $linkupevent =
return;
}
$lladdr = !empty($lancfg['track6-lladdr']) ? $lancfg['track6-lladdr'] : 'fe80::1:1';
$realif = get_real_interface($interface, 'inet6');
/* always configure a fixed link-local on the track6 interfaces */
@ -2584,7 +2586,7 @@ function interface_track6_configure($interface = 'lan', $lancfg, $linkupevent =
if (!empty($linklocal)) {
mwexecf('/sbin/ifconfig %s inet6 %s delete', array($realif, $linklocal));
}
mwexecf('/sbin/ifconfig %s inet6 %s', array($realif, "fe80::1:1%{$realif}"));
mwexecf('/sbin/ifconfig %s inet6 %s', array($realif, "{$lladdr}%{$realif}"));
switch ($trackcfg['ipaddrv6']) {
case '6to4':

View File

@ -426,6 +426,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
'subnet',
'subnetv6',
'track6-interface',
'track6-lladdr',
'track6-prefix-id',
'rfc3118_isp',
'rfc3118_username',
@ -445,7 +446,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$pconfig['dhcp6usev4iface'] = isset($a_interfaces[$if]['dhcp6usev4iface']);
$pconfig['dhcp6norelease'] = isset($a_interfaces[$if]['dhcp6norelease']);
$pconfig['adv_dhcp6_debug'] = isset($a_interfaces[$if]['adv_dhcp6_debug']);
$pconfig['track6-prefix-id--hex'] = sprintf("%x", empty($pconfig['track6-prefix-id']) ? 0 :$pconfig['track6-prefix-id']);
$pconfig['track6-prefix-id--hex'] = sprintf("%x", empty($pconfig['track6-prefix-id']) ? 0 : $pconfig['track6-prefix-id']);
$pconfig['dhcpd6track6allowoverride'] = isset($a_interfaces[$if]['dhcpd6track6allowoverride']);
/*
@ -794,6 +795,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
}
/* XXX should also check for duplicate delegation in peer trackers */
}
if (!empty($pconfig['track6-lladdr']) && (!is_ipaddrv6($pconfig['track6-lladdr']) || !is_linklocal($pconfig['track6-lladdr']))) {
$input_errors[] = gettext('A valid link-local tracking router address must be specified.');
}
break;
}
@ -1222,6 +1226,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
case 'track6':
$new_config['ipaddrv6'] = 'track6';
$new_config['track6-interface'] = $pconfig['track6-interface'];
$new_config['track6-lladdr'] = $pconfig['track6-lladdr'];
$new_config['track6-prefix-id'] = 0;
if (ctype_xdigit($pconfig['track6-prefix-id--hex'])) {
$new_config['track6-prefix-id'] = intval($pconfig['track6-prefix-id--hex'], 16);
@ -3022,6 +3027,15 @@ include("head.inc");
</div>
</td>
</tr>
<tr>
<td><a id="help_for_track6-lladdr" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?= gettext('Link-local router address') ?></td>
<td>
<input name="track6-lladdr" type="text" id="track6-lladdr" value="<?= html_safe($pconfig['track6-lladdr']) ?>" placeholder="fe80::1:1"/>
<div class="hidden" data-for="help_for_track6-lladdr">
<?= gettext('The value in this field is the link-local router address. Optionally overrides the recommended use of fe80::1:1.') ?>
</div>
</td>
</tr>
<tr>
<td><a id="help_for_dhcpd6_opt" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?= gettext('Manual configuration') ?></td>
<td>