summaryrefslogtreecommitdiffstats
path: root/etc/inc
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2013-02-09 13:23:25 +0000
committerErmal <eri@pfsense.org>2013-02-09 13:23:25 +0000
commit7a41d7378fdb6e10e2a02c14fa55683dddcd931e (patch)
tree1caf65fd50fae6d8607d569e0799748bc302eb22 /etc/inc
parent6ebfa0ccfd7db500a4f85d2d45ebd74699a8805f (diff)
downloadpfsense-7a41d7378fdb6e10e2a02c14fa55683dddcd931e.zip
pfsense-7a41d7378fdb6e10e2a02c14fa55683dddcd931e.tar.gz
Revert "Remove track6 dhcp configuration since dhcp6 will do this for us."
This reverts commit 6ebfa0ccfd7db500a4f85d2d45ebd74699a8805f.
Diffstat (limited to 'etc/inc')
-rw-r--r--etc/inc/interfaces.inc41
1 files changed, 40 insertions, 1 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc
index 553f1b2..bca9a24 100644
--- a/etc/inc/interfaces.inc
+++ b/etc/inc/interfaces.inc
@@ -2995,7 +2995,7 @@ function interface_track6_configure($interface = "lan", $wancfg) {
case "dhcp6":
if ($g['debug'])
log_error("Interface {$interface} configured via {$wancfg['track6-interface']} type {$type}");
- /* NOTE dhcp6c will do the work for us so no need to do anything here. */
+ interface_track6_dhcp6_configure($interface, $wancfg);
break;
}
@@ -3121,6 +3121,45 @@ function interface_track6_6to4_configure($interface = "lan", $lancfg) {
return 0;
}
+function interface_track6_dhcp6_configure($interface = "lan", $lancfg) {
+ global $config, $g;
+
+ if (!is_array($lancfg))
+ return;
+
+ /* If the interface is not configured via another, exit */
+ if (empty($lancfg['track6-interface']))
+ return;
+
+ if (!is_numeric($lancfg['track6-prefix-id']))
+ $lancfg['track6-prefix-id'] = 0;
+
+ $wancfg = $config['interfaces'][$lancfg['track6-interface']];
+ if (empty($wancfg)) {
+ log_error("Interface {$interface} tracking non-existant interface {$lancfg['track6-interface']}");
+ return;
+ }
+
+ $wanif = get_real_interface($lancfg['track6-interface']);
+ $ifcfgipv6 = find_interface_ipv6($wanif);
+ if (is_ipaddrv6($ifcfgipv6)) {
+ $dhcp6lanarr = explode(":", Net_IPv6::uncompress($ifcfgipv6));
+ $dhcp6lanarr[4] = 0;
+ $dhcp6lanarr[5] = 0;
+ $dhcp6lanarr[6] = 0;
+ $dhcp6lanarr[7] = 1;
+ $dhcp6lan = Net_IPv6::compress(implode(":", $dhcp6lanarr));
+ $lanif = get_real_interface($interface);
+ $oip = find_interface_ipv6($lanif);
+ if (is_ipaddrv6($oip))
+ mwexec("/sbin/ifconfig {$lanif} inet6 {$oip} delete");
+ log_error("dhcp6 {$interface} with ipv6 address {$dhcp6lan} based on {$lancfg['track6-interface']}");
+ mwexec("/sbin/ifconfig {$lanif} inet6 {$dhcp6lan} prefixlen 64");
+ }
+
+ return 0;
+}
+
function interface_6rd_configure($interface = "wan", $wancfg) {
global $config, $g;
OpenPOWER on IntegriCloud