diff options
-rw-r--r-- | etc/inc/interfaces.inc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index 37bc6d7..fc3c831 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -3043,7 +3043,7 @@ function interface_configure($interface = "wan", $reloadall = false, $linkupeven interface_6to4_configure($interface, $wancfg); break; case 'track6': - interface_track6_configure($interface, $wancfg); + interface_track6_configure($interface, $wancfg, $linkupevent); break; default: /* XXX: Kludge for now related to #3280 */ @@ -3140,7 +3140,7 @@ function interface_configure($interface = "wan", $reloadall = false, $linkupeven return 0; } -function interface_track6_configure($interface = "lan", $wancfg) { +function interface_track6_configure($interface = "lan", $wancfg, $linkupevent = false) { global $config, $g; if (!is_array($wancfg)) @@ -3179,9 +3179,20 @@ function interface_track6_configure($interface = "lan", $wancfg) { log_error("Interface {$interface} configured via {$wancfg['track6-interface']} type {$type}"); interface_track6_6rd_configure($interface, $wancfg); break; + case "dhcp6": + if ($linkupevent == true) { + /* + * NOTE: Usually come here from rc.linkup calling so just call directly intead of generating event + * Instead of disrupting all other v4 configuration just restart DHCPv6 client for now + * + * XXX: Probably DHCPv6 client should handle this autmagically itself? + */ + interface_dhcpv6_configure($wancfg['track6-interface'], $trackcfg); + } + break; } - if (!$g['booting']) { + if (!$g['booting'] && $linkupevent == false) { if (!function_exists('services_dhcpd_configure')) require_once("services.inc"); |