summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorPhil Davis <phil.davis@inf.org>2014-11-03 20:49:15 +0545
committerPhil Davis <phil.davis@inf.org>2014-11-03 20:49:15 +0545
commitba667cc6f4e0bb5fa282a3cf6750359c5d216bac (patch)
tree1d09ebd2bc7da805036a81f87f40e4372bfc41d9 /etc
parentec2904649fac23c5155e779ebf3a266c94125c5f (diff)
downloadpfsense-ba667cc6f4e0bb5fa282a3cf6750359c5d216bac.zip
pfsense-ba667cc6f4e0bb5fa282a3cf6750359c5d216bac.tar.gz
Fix console set interface IP address
Problem as per forum https://forum.pfsense.org/index.php?topic=83651.0 The problem comes whenever services_dhcpd_configure is called - the global $config gets reset from the actual current config, and any pending changes in the current process are lost. It was introduced by commit 86ce2df in which services_dhcpdv4_configure() does: require_once('pkg-utils.inc') and pkg-utils.inc does various stuff like: if(file_exists("/cf/conf/use_xmlreader")) require_once("xmlreader.inc"); else require_once("xmlparse.inc"); which seems to cause a reset of the $config variable, thus losing the pending changes the user has entered at the console. The top-level code in rc.initial.setlanip really does not need to (and should not) implement any changes along the way - it should collect all the answers from the user, then write_config and then make all the necessary calls to routines to implement the changes on the running system. This fixes it - defer any calls to services_dhcpd_configure() until after all questions are answered and write_config has happened.
Diffstat (limited to 'etc')
-rwxr-xr-xetc/rc.initial.setlanip12
1 files changed, 5 insertions, 7 deletions
diff --git a/etc/rc.initial.setlanip b/etc/rc.initial.setlanip
index 0ab10d4..be07a7e 100755
--- a/etc/rc.initial.setlanip
+++ b/etc/rc.initial.setlanip
@@ -397,14 +397,12 @@ function console_configure_dhcpd($version = 4) {
} else {
/* TODO - this line is causing a "Fatal error: Cannot unset
string offsets in /etc/rc.initial.setlanip" on below line
- number */
- if($config[$dhcpd][$interface])
+ number - Nov 2014 - is it really? */
+ if($config[$dhcpd][$interface]) {
unset($config[$dhcpd][$interface]['enable']);
- echo "Disabling DHCPD...";
- if (!$dry_run) {
- services_dhcpd_configure();
+ printf(gettext("Disabling %s DHCPD..."), $label_IPvX);
+ $restart_dhcpd = true;
}
- echo "Done!\n";
}
}
@@ -454,7 +452,7 @@ if(!$config['interfaces']['lan']) {
unset($config['nat']);
if (!$dry_run) {
system("rm /var/dhcpd/var/db/* >/dev/null 2>/dev/null");
- services_dhcpd_configure();
+ $restart_dhcpd = true;
}
}
OpenPOWER on IntegriCloud