From b73eda208e9ebb945018fc31290babe483e0e4cd Mon Sep 17 00:00:00 2001 From: Chris Buechler Date: Mon, 24 Dec 2007 07:44:26 +0000 Subject: Revert broken OPT interface removal commit. This breaks configurations entirely, worse than just improperly shifting configuration items. Ticket #1532 --- etc/inc/pfsense-utils.inc | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'etc/inc/pfsense-utils.inc') diff --git a/etc/inc/pfsense-utils.inc b/etc/inc/pfsense-utils.inc index bfc3808..38228bd 100644 --- a/etc/inc/pfsense-utils.inc +++ b/etc/inc/pfsense-utils.inc @@ -2452,15 +2452,21 @@ function cleanup_opt_interfaces_after_removal($opt_interface_num) { unlink_if_exists("{$g['tmp_path']}/config.cache"); $config_file = file_get_contents("/cf/conf/config.xml"); /* loop through and reassign deleted items */ - $orig = array('opt'.$opt_interface_num,'OPT'.$opt_interface_num); - $repl = array('optXXXX','OPTXXXX'); - for ($i = $opt_interface_num+1; isset ($config['interfaces']['opt' . $i]); $i++) { - array_push($orig,'opt'.$i); - array_push($repl,'opt'.($i -1)); - array_push($orig,'OPT'.$i); - array_push($repl,'OPT'.($i -1)); - } - $config_file = str_replace($orig, $repl, $config_file); + for ($i = 500; isset ($config['interfaces']['opt' . $i]); $i--) { + if ($i < $opt_interface_num) + break; + if ($i == $opt_interface_num) { + /* item should be deleted */ + str_replace("opt" . $i, "optXXXX", $config_file); + } + } + /* loop through and reassign optional items */ + for ($i = 500; isset ($config['interfaces']['opt' . $i]); $i--) { + if ($i < $opt_interface_num) + break; + /* replace opt$i with $i -1 */ + str_replace("opt" . $i, "opt" . ($i -1), $config_file); + } $fd = fopen("/cf/conf/config.xml", "w"); fwrite($fd, $config_file); fclose($fd); @@ -2484,7 +2490,6 @@ function cleanup_opt_interfaces_after_removal($opt_interface_num) { if($config['nat']['rule'][$x]['interface'] == "optXXXX") unset($config['nat']['rule'][$x]['interface']); } - write_config(); conf_mount_ro(); config_unlock(); return true; @@ -3617,4 +3622,4 @@ function is_wan_interface_up($interface) { return false; } -?> +?> \ No newline at end of file -- cgit v1.1