diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index 240a567..3e24570 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -1133,23 +1133,26 @@ function interface_bring_down($interface = "wan", $destroy = false, $ifacecfg = if ($g['debug']) log_error("Calling interface down for interface {$interface}, destroy is " . (($destroy) ? 'true' : 'false')); - if ($ifacecfg === false) + if ($ifacecfg === false) { $ifcfg = $config['interfaces'][$interface]; - else if (!is_array($ifacecfg)) + $ppps = $config['ppps']['ppp']; + $realif = get_real_interface($interface); + } elseif (!is_array($ifacecfg)) { log_error(gettext("Wrong parameters used during interface_bring_down")); - else - $ifcfg = $ifacecfg; - + } else { + $ifcfg = $ifacecfg['ifcfg']; + $ppps = $ifacecfg['ppps']; - $realif = get_real_interface($interface); + /* Detect the old realif */ + } switch ($ifcfg['ipaddr']) { case "ppp": case "pppoe": case "pptp": case "l2tp": - if (is_array($config['ppps']['ppp']) && count($config['ppps']['ppp'])) { - foreach ($config['ppps']['ppp'] as $pppid => $ppp) { + if (is_array($ppps) && count($ppps)) { + foreach ($ppps as $pppid => $ppp) { if ($realif == $ppp['if']) { if (isset($ppp['ondemand']) && !$destroy){ send_event("interface reconfigure {$interface}"); diff --git a/usr/local/www/interfaces.php b/usr/local/www/interfaces.php index 7a1abe1..42c81af 100755 --- a/usr/local/www/interfaces.php +++ b/usr/local/www/interfaces.php @@ -86,6 +86,7 @@ $a_gateways = &$config['gateways']['gateway_item']; $wancfg = &$config['interfaces'][$if]; $old_wancfg = $wancfg; +$old_ppps = $a_ppps; // Populate page descr if it does not exist. if ($if == "wan" && !$wancfg['descr']) $wancfg['descr'] = "WAN"; @@ -388,7 +389,8 @@ if ($_POST['apply']) { } else { $toapplylist = array(); } - $toapplylist[$if] = $wancfg; + $toapplylist[$if]['ifcfg'] = $wancfg; + $toapplylist[$if]['ppps'] = $a_ppps; /* we need to be able remove IP aliases for IPv6 */ file_put_contents("{$g['tmp_path']}/.interfaces.apply", serialize($toapplylist)); header("Location: interfaces.php?if={$if}"); @@ -887,7 +889,8 @@ if ($_POST['apply']) { } else { $toapplylist = array(); } - $toapplylist[$if] = $old_wancfg; + $toapplylist[$if]['ifcfg'] = $old_wancfg; + $toapplylist[$if]['ppps'] = $old_ppps; file_put_contents("{$g['tmp_path']}/.interfaces.apply", serialize($toapplylist)); mark_subsystem_dirty('interfaces');