summaryrefslogtreecommitdiffstats
path: root/etc/inc/pfsense-utils.inc
diff options
context:
space:
mode:
Diffstat (limited to 'etc/inc/pfsense-utils.inc')
-rw-r--r--etc/inc/pfsense-utils.inc27
1 files changed, 16 insertions, 11 deletions
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
OpenPOWER on IntegriCloud