From cca7eda6c304daa93928e7387fab17d13e8fd397 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Wed, 1 Jul 2015 23:26:35 +0200 Subject: [PATCH] config: clean up more code paths, whew; #5 Always unload LAN if previously set. Otherwise no code changes. --- src/etc/inc/config.console.inc | 215 ++++++++++++++------------------- src/etc/rc.bootup | 9 +- src/etc/rc.initial.setports | 5 +- 3 files changed, 94 insertions(+), 135 deletions(-) diff --git a/src/etc/inc/config.console.inc b/src/etc/inc/config.console.inc index 9e171b910..5141f5692 100644 --- a/src/etc/inc/config.console.inc +++ b/src/etc/inc/config.console.inc @@ -149,11 +149,11 @@ EOD; } } while (!$lanif); - /* optional interfaces */ - $optif = array(); - $i = 0; + while ($lanif != '') { + /* optional interfaces */ + $optif = array(); + $i = 0; - if ($lanif != '') { while (1) { if ($optif[$i]) $i++; @@ -188,6 +188,8 @@ EOD; /* check for double assignments */ $ifarr = array_merge(array($lanif, $wanif), $optif); + $again = false; + for ($i = 0; $i < (count($ifarr)-1); $i++) { for ($j = ($i+1); $j < count($ifarr); $j++) { if ($ifarr[$i] == $ifarr[$j]) { @@ -196,12 +198,16 @@ EOD; Error: you cannot assign the same interface name twice! EOD; - fclose($fp); - return false; + + $again = true; } } } + if ($again) { + continue; + } + echo "\n" . gettext("The interfaces will be assigned as follows:") . "\n\n"; echo "WAN -> " . $wanif . "\n"; @@ -221,135 +227,90 @@ EOD; $key = 'y'; echo $key . PHP_EOL; } + + if (in_array($key, array('y', 'Y'))) { + break; + } } - if (!$interactive) { - $key = 'y'; + if ($lanif) { + if (!is_array($config['interfaces']['lan'])) { + $config['interfaces']['lan'] = array(); + } + $config['interfaces']['lan']['if'] = $lanif; + $config['interfaces']['lan']['enable'] = true; + } else { + if(isset($config['interfaces']['lan']['if'])) + mwexec("/sbin/ifconfig " . $config['interfaces']['lan']['if'] . " delete"); + if(isset($config['interfaces']['lan'])) + unset($config['interfaces']['lan']); + if(isset($config['dhcpd']['lan'])) + unset($config['dhcpd']['lan']); + if(isset($config['interfaces']['lan']['if'])) + unset($config['interfaces']['lan']['if']); + if(isset($config['interfaces']['wan']['blockpriv'])) + unset($config['interfaces']['wan']['blockpriv']); + if(isset($config['nat'])) + unset($config['nat']); } - if (in_array($key, array('y', 'Y'))) { - if ($lanif) { - if (!is_array($config['interfaces']['lan'])) { - $config['interfaces']['lan'] = array(); - } - $config['interfaces']['lan']['if'] = $lanif; - $config['interfaces']['lan']['enable'] = true; - } elseif (!file_exists('/var/run/booting') && - isset($config['interfaces']['lan'])) { - -echo <<