summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/captiveportal.inc12
-rw-r--r--etc/inc/cmd_chain.inc132
-rw-r--r--etc/inc/filter.inc6
-rw-r--r--etc/inc/gwlb.inc4
-rw-r--r--etc/inc/interfaces.inc89
-rw-r--r--etc/inc/pkg-utils.inc28
-rw-r--r--etc/inc/services.inc10
-rw-r--r--etc/inc/util.inc2
-rwxr-xr-xetc/rc.linkup47
-rwxr-xr-xetc/rc.start_packages5
10 files changed, 96 insertions, 239 deletions
diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc
index 9f7d8e0..23ac756 100644
--- a/etc/inc/captiveportal.inc
+++ b/etc/inc/captiveportal.inc
@@ -835,7 +835,7 @@ function captiveportal_disconnect($dbent, $radiusservers,$term_cause = 1,$stop_t
if (is_ipaddr($dbent[2])) {
captiveportal_ipfw_set_context($cpzone);
- /* Delete client's ip entry from tables 3 and 4. */
+ /* Delete client's ip entry from tables 1 and 2. */
pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_DEL, 1, $dbent[2]);
pfSense_ipfw_Tableaction($cpzone, IP_FW_TABLE_DEL, 2, $dbent[2]);
/* XXX: Redundant?! Ensure all pf(4) states are killed. */
@@ -1346,7 +1346,7 @@ function captiveportal_get_next_dn_ruleno($rulenos_start = 2000, $rulenos_range_
break;
}
} else {
- $rules = array_pad(array(), $rulenos_range_max - $rulenos_start, false);
+ $rules = array_pad(array(), $rulenos_range_max, false);
$rules[$rulenos_start] = "used";
$rules[++$rulenos_start] = "used";
$ruleno = $rulenos_start;
@@ -1377,9 +1377,9 @@ function captiveportal_get_dn_passthru_ruleno($value) {
if(!isset($cpcfg['enable']))
return NULL;
- $cpruleslck = lock("captiveportalrules{$cpzone}", LOCK_EX);
- if (file_exists("{$g['vardb_path']}/captiveportal_{$cpzone}.rules")) {
- $rules = unserialize(file_get_contents("{$g['vardb_path']}/captiveportal_{$cpzone}.rules"));
+ $cpruleslck = lock("captiveportalrulesdn", LOCK_EX);
+ if (file_exists("{$g['vardb_path']}/captiveportaldn.rules")) {
+ $rules = unserialize(file_get_contents("{$g['vardb_path']}/captiveportaldn.rules"));
captiveportal_ipfw_set_context($cpzone);
$ruleno = intval(`/sbin/ipfw show | /usr/bin/grep {$value} | /usr/bin/grep -v grep | /usr/bin/cut -d " " -f 5 | /usr/bin/head -n 1`);
if ($rules[$ruleno]) {
@@ -1423,7 +1423,7 @@ function captiveportal_get_next_ipfw_ruleno($rulenos_start = 2, $rulenos_range_m
break;
}
} else {
- $rules = array_pad(array(), $rulenos_range_max - $rulenos_start, false);
+ $rules = array_pad(array(), $rulenos_range_max, false);
$rules[$rulenos_start] = "used";
$rules[++$rulenos_start] = "used";
$ruleno = 2;
diff --git a/etc/inc/cmd_chain.inc b/etc/inc/cmd_chain.inc
deleted file mode 100644
index 4c1e69e..0000000
--- a/etc/inc/cmd_chain.inc
+++ /dev/null
@@ -1,132 +0,0 @@
-<?php
-/* $Id$ */
-/*
- cmd_chain.inc
- Part of pfSense
- Copyright (C) 2008 Scott Ullrich
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
-
- pfSense_MODULE: utils
-*/
-
-/*
- * HANDY FOR STAND ALONE DEBUGGING OF CLASS.
- *
-
- function log_error($text) {
- echo $text . "\n";
- }
-
-*/
-
-/*
- * CmdCHAIN allows a chaining of commands into one call.
- * If debugging is enabled verbose logging is applied.
- * During the command(s) execution if it fails the result
- * will be reported to syslog so that the problem can be reported.
- */
-Class CmdCHAIN {
-
- var $cmd_chain_array = array();
- var $is_debugging;
- var $halt_on_errors = true;
-
- /* clear() erases the current cmdchain */
- function clear() {
- unset($cmd_chain_array);
- $this->cmd_chain_array = array();
- }
-
- /* enables log_error() of each command we run */
- function setdebug() {
- $this->is_debugging = true;
- }
-
- /* no halt execution of CmdCHAIN if there is a failure */
- function nohaltonerror() {
- $this->halt_on_errors = false;
- }
-
- /* halts execution of CmdCHAIN if there is a failure */
- function sethaltonerror() {
- $this->halt_on_errors = true;
- }
-
- /* adds a command to the CmdCHAIN */
- function add($cmd_title = "", $command = "", $ignore_return_text = false) {
- if(!$cmd_title)
- return;
- if(!$command)
- return;
- $temp = array();
- $temp['cmd_title'] = $cmd_title;
- $temp['command'] = $command;
- if($ignore_return_text)
- $temp['ignore_return_text'] = true;
- else
- $temp['ignore_return_text'] = false;
- $this->cmd_chain_array[] = $temp; // add array to class
- return array();
- }
-
- /* executes the CmdCHAIN one command at a time */
- function execute() {
- foreach($this->cmd_chain_array as $cmd) {
- $cmd_title = $cmd['cmd_title'];
- $command = $cmd['command'];
- $ignore_return_text = $cmd['ignore_return_text'];
- // Should we perform verbose debugging?
- if($this->is_debugging == true) {
- log_error(sprintf(gettext('CmdCHAIN is executing -> %1$s - %2$s'), $cmd_title, $command));
- usleep(100); // give network stack time to deliver network syslog message
- }
- // Execute command
- $status = exec($command);
- if($this->ignore_return_text == true)
- continue;
- if(intval($status) <> 0) {
- log_error(sprintf(gettext('%1$s failed with return code -> %2$s. The command was %3$s'), $cmd_title, $status, $command));
- if($this->halt_on_errors == true)
- return(sprintf(gettext('%1$s failed with return code -> %2$s. The command was %3$s'), $cmd_title, $status, $command));
- }
- }
- return;
- }
-}
-
-/*
- * example usage:
- *
-
-$cmdchain = new CmdCHAIN();
-$cmdchain->add("grab freebsd version", "uname -a", false);
-$cmdchain->setdebug(); // optional for verbose logging
-$cmdchain->nohaltonerror(); // tells cmdchain to keep processing commands if any of them fail
-$cmdchain->execute();
-
-$cmdchain->clear(); // clears the previous added entries
-
-*/
-
-?>
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc
index 6e0da37..6bd77d6 100644
--- a/etc/inc/filter.inc
+++ b/etc/inc/filter.inc
@@ -336,12 +336,8 @@ function filter_configure_sync($delete_states_if_needed = true) {
layer7_start_l7daemon();
if(!empty($filterdns)) {
- $filterdnsfd = fopen("{$g['varetc_path']}/filterdns.conf", "w");
- if($filterdnsfd) {
- fwrite($filterdnsfd, $filterdns);
- fclose($filterdnsfd);
- }
killbypid("{$g['tmp_path']}/filterdns.pid");
+ @file_put_contents("{$g['varetc_path']}/filterdns.conf", $filterdns);
/*
* FilterDNS has three debugging levels. The default choosen is 1.
* Availabe are level 2 and greater then 2.
diff --git a/etc/inc/gwlb.inc b/etc/inc/gwlb.inc
index 173a185..3dc7e2b 100644
--- a/etc/inc/gwlb.inc
+++ b/etc/inc/gwlb.inc
@@ -522,7 +522,7 @@ function return_gateways_array($disabled = false, $localhost = false) {
$ctype = strtoupper($ifcfg['ipaddr']);
break;
default:
- if (substr($ifcfg['if'], 0, 5) == "ovpnc")
+ if (substr($ifcfg['if'], 0, 4) == "ovpn")
$ctype = "VPNv4";
break;
}
@@ -588,7 +588,7 @@ function return_gateways_array($disabled = false, $localhost = false) {
$ctype = strtoupper($ifcfg['ipaddrv6']);
break;
default:
- if (substr($ifcfg['if'], 0, 5) == "ovpnc")
+ if (substr($ifcfg['if'], 0, 4) == "ovpn")
$ctype = "VPNv6";
break;
}
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc
index 7b12d02..07d621d 100644
--- a/etc/inc/interfaces.inc
+++ b/etc/inc/interfaces.inc
@@ -44,7 +44,6 @@
/* include all configuration functions */
require_once("globals.inc");
-require_once("cmd_chain.inc");
require_once("util.inc");
require_once("gwlb.inc");
@@ -834,13 +833,19 @@ function interface_gif_configure(&$gif, $gifkey = "") {
return -1;
$realif = get_real_interface($gif['if']);
+ $ipaddr = $gif['ipaddr'];
- if(is_ipaddrv4($gif['remote-addr'])) {
- $realifip = get_interface_ip($gif['if']);
+ if (is_ipaddrv4($gif['remote-addr'])) {
+ if (is_ipaddrv4($ipaddr))
+ $realifip = $ipaddr;
+ else
+ $realifip = get_interface_ip($gif['if']);
$realifgw = get_interface_gateway($gif['if']);
- }
- if(is_ipaddrv6($gif['remote-addr'])) {
- $realifip = get_interface_ipv6($gif['if']);
+ } else if (is_ipaddrv6($gif['remote-addr'])) {
+ if (is_ipaddrv6($ipaddr))
+ $realifip = $ipaddr;
+ else
+ $realifip = get_interface_ipv6($gif['if']);
$realifgw = get_interface_gatewayv6($gif['if']);
}
/* make sure the parent interface is up */
@@ -1747,24 +1752,18 @@ EOD;
function interfaces_carp_setup() {
global $g, $config;
- $balanacing = "";
- $pfsyncinterface = "";
- $pfsyncenabled = "";
- if(isset($config['system']['developerspew'])) {
+ if (isset($config['system']['developerspew'])) {
$mt = microtime();
echo "interfaces_carp_setup() being called $mt\n";
}
- // Prepare CmdCHAIN that will be used to execute commands.
- $cmdchain = new CmdCHAIN();
-
if ($g['booting']) {
echo gettext("Configuring CARP settings...");
mute_kernel_msgs();
}
/* suck in configuration items */
- if($config['hasync']) {
+ if ($config['hasync']) {
$pfsyncenabled = $config['hasync']['pfsyncenabled'];
$balanacing = $config['hasync']['balancing'];
$pfsyncinterface = $config['hasync']['pfsyncinterface'];
@@ -1775,46 +1774,30 @@ function interfaces_carp_setup() {
unset($pfsyncenabled);
}
- if($balanacing) {
- $cmdchain->add(gettext("Enable CARP ARP-balancing"), "/sbin/sysctl net.inet.carp.arpbalance=1", true);
- $cmdchain->add(gettext("Disallow CARP preemption"), "/sbin/sysctl net.inet.carp.preempt=0", true);
+ if ($balanacing) {
+ mwexec("/sbin/sysctl net.inet.carp.arpbalance=1", true);
+ mwexec("/sbin/sysctl net.inet.carp.preempt=0", true);
} else
- $cmdchain->add(gettext("Enable CARP preemption"), "/sbin/sysctl net.inet.carp.preempt=1", true);
+ mwexec("/sbin/sysctl net.inet.carp.preempt=1", true);
- $cmdchain->add(gettext("Enable CARP logging"), "/sbin/sysctl net.inet.carp.log=1", true);
+ mwexec("sbin/sysctl net.inet.carp.log=1", true);
if (!empty($pfsyncinterface))
$carp_sync_int = get_real_interface($pfsyncinterface);
-
- if($g['booting']) {
- /* install rules to alllow pfsync to sync up during boot
- * carp interfaces will remain down until the bootup sequence finishes
- */
- $fd = fopen("{$g['tmp_path']}/rules.boot", "w");
- if ($fd) {
- fwrite($fd, "block quick proto carp \n");
- fwrite($fd, "block quick proto pfsync \n");
- fwrite($fd, "pass out quick from any to any keep state\n");
- fclose($fd);
- mwexec("/sbin/pfctl -f {$g['tmp_path']}/rules.boot");
- } else
- log_error(gettext("Could not create rules.boot file!"));
- }
+ else
+ unset($carp_sync_int);
/* setup pfsync interface */
- if($carp_sync_int and $pfsyncenabled) {
+ if ($carp_sync_int and $pfsyncenabled) {
if (is_ipaddr($pfsyncpeerip))
- $cmdchain->add(gettext("Bring up pfsync0 syncpeer"), "/sbin/ifconfig pfsync0 syncdev {$carp_sync_int} syncpeer {$pfsyncpeerip} up", false);
+ mwexec("/sbin/ifconfig pfsync0 syncdev {$carp_sync_int} syncpeer {$pfsyncpeerip} up", false);
else
- $cmdchain->add(gettext("Bring up pfsync0 syncdev"), "/sbin/ifconfig pfsync0 syncdev {$carp_sync_int} up", false);
- } else
- $cmdchain->add(gettext("Bring up pfsync0"), "/sbin/ifconfig pfsync0 syncdev lo0 up", false);
+ mwexec("/sbin/ifconfig pfsync0 syncdev {$carp_sync_int} up", false);
- sleep(1);
+ sleep(1);
- /* XXX: Handle an issue with pfsync(4) and carp(4). In a cluster carp will come up before pfsync(4) has updated and so will cause issues
- * for existing sessions.
- */
- if ($config['hasync']['pfsyncenabled'] === "on"){
+ /* XXX: Handle an issue with pfsync(4) and carp(4). In a cluster carp will come up before pfsync(4) has updated and so will cause issues
+ * for existing sessions.
+ */
log_error("waiting for pfsync...");
$i = 0;
while (intval(trim(`/sbin/ifconfig pfsync0 | /usr/bin/grep 'syncok: 0' | /usr/bin/grep -v grep | /usr/bin/wc -l`)) == 0 && $i < 30) {
@@ -1826,16 +1809,10 @@ function interfaces_carp_setup() {
}
if($config['virtualip']['vip'])
- $cmdchain->add(gettext("Allow CARP."), "/sbin/sysctl net.inet.carp.allow=1", true);
+ mwexec("/sbin/sysctl net.inet.carp.allow=1", true);
else
- $cmdchain->add(gettext("Disallow CARP."), "/sbin/sysctl net.inet.carp.allow=0", true);
+ mwexec("/sbin/sysctl net.inet.carp.allow=0", true);
- if($g['debug'])
- $cmdchain->setdebug(); // optional for verbose logging
-
- $cmdchain->execute();
- $cmdchain->clear();
-
if ($g['booting']) {
unmute_kernel_msgs();
echo gettext("done.") . "\n";
@@ -3156,6 +3133,7 @@ function interface_6rd_configure($interface = "wan") {
/* stf approach only works when embedding the entire 32 bits of the v4 */
mwexec("/sbin/ifconfig stf0 create");
+ pfSense_interface_flags("stf0", IFF_LINK2);
mwexec("/sbin/ifconfig stf0 inet6 {$rd6prefix}/{$rd6prefixlen}");
log_error("Created 6rd interface stf0 {$rd6prefix}/{$rd6prefixlen}");
@@ -3251,6 +3229,7 @@ function interface_6to4_configure($interface = "wan"){
/* setup the stf interface */
mwexec("/sbin/ifconfig stf0 destroy");
mwexec("/sbin/ifconfig stf0 create");
+ pfSense_interface_flags("stf0", IFF_LINK2);
mwexec("/sbin/ifconfig stf0 inet6 {$stflanpr} prefixlen 16");
log_error("Set IPv6 address inet6 {$stflanpr} prefixlen 16 for stf0, route {$stfbrgw}");
@@ -4287,7 +4266,7 @@ function get_interfaces_with_gateway() {
$ints[$ifdescr] = $ifdescr;
break;
default:
- if (substr($ifname['if'], 0, 5) == "ovpnc" ||
+ if (substr($ifname['if'], 0, 4) == "ovpn" ||
!empty($ifname['gateway']))
$ints[$ifdescr] = $ifdescr;
break;
@@ -4311,7 +4290,7 @@ function interface_has_gateway($friendly) {
return true;
break;
default:
- if (substr($ifname['if'], 0, 5) == "ovpnc")
+ if (substr($ifname['if'], 0, 4) == "ovpn")
return true;
if (!empty($ifname['gateway']))
return true;
@@ -4340,7 +4319,7 @@ function interface_has_gatewayv6($friendly) {
return true;
break;
default:
- if (substr($ifname['if'], 0, 5) == "ovpnc")
+ if (substr($ifname['if'], 0, 4) == "ovpn")
return true;
if (!empty($ifname['gatewayv6']))
return true;
diff --git a/etc/inc/pkg-utils.inc b/etc/inc/pkg-utils.inc
index d667c12..87dd0ae 100644
--- a/etc/inc/pkg-utils.inc
+++ b/etc/inc/pkg-utils.inc
@@ -168,6 +168,24 @@ function get_pkg_id($pkg_name) {
return -1;
}
+/****f* pkg-utils/get_pkg_internal_name
+ * NAME
+ * get_pkg_internal_name - Find a package's internal name (e.g. squid3 internal name is squid)
+ * INPUTS
+ * $package - array of package data from config
+ * RESULT
+ * string - internal name (if defined) or default to package name
+ ******/
+function get_pkg_internal_name($package) {
+ if (isset($package['internal_name']) && ($package['internal_name'] != "")) {
+ /* e.g. name is Ipguard-dev, internal name is ipguard */
+ $pkg_internal_name = $package['internal_name'];
+ } else {
+ $pkg_internal_name = $package['name'];
+ }
+ return $pkg_internal_name;
+}
+
/****f* pkg-utils/get_pkg_info
* NAME
* get_pkg_info - Retrieve package information from pfsense.com.
@@ -240,7 +258,7 @@ function resync_all_package_configs($show_message = false) {
echo " " . $package['name'];
get_pkg_depends($package['name'], "all");
if($g['booting'] != true)
- stop_service($package['name']);
+ stop_service(get_pkg_internal_name($package));
sync_package($idx, true, true);
if($pkg_interface == "console")
echo "\n" . gettext("Syncing packages:");
@@ -356,10 +374,9 @@ function uninstall_package($pkg_name) {
}
}
- stop_service($pkg_name);
-
$id = get_pkg_id($pkg_name);
if ($id >= 0) {
+ stop_service(get_pkg_internal_name($config['installedpackages']['package'][$id]));
$pkg_depends =& $config['installedpackages']['package'][$id]['depends_on_package_pbi'];
$static_output .= "Removing package...\n";
update_output_window($static_output);
@@ -1281,8 +1298,9 @@ function stop_packages() {
if (is_array($config['installedpackages']['package'])) {
foreach($config['installedpackages']['package'] as $package) {
echo " Stopping package {$package['name']}...";
- stop_service($package['name']);
- unset($rcfiles[RCFILEPREFIX . $package['name'] . ".sh"]);
+ $internal_name = get_pkg_internal_name($package);
+ stop_service($internal_name);
+ unset($rcfiles[RCFILEPREFIX . strtolower($internal_name) . ".sh"]);
echo "done.\n";
}
}
diff --git a/etc/inc/services.inc b/etc/inc/services.inc
index d5c6b3a..4e6a532 100644
--- a/etc/inc/services.inc
+++ b/etc/inc/services.inc
@@ -6,7 +6,7 @@
originally part of m0n0wall (http://m0n0.ch/wall)
Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
- Copyright (C) 2010 Ermal Lu�i
+ Copyright (C) 2010 Ermal Luci
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -1493,15 +1493,9 @@ function services_dyndns_configure($int = "") {
echo gettext("Starting DynDNS clients...");
foreach ($dyndnscfg as $dyndns) {
- $failovergroup = interface_gateway_group_member($int);
- if (!empty($int) && $int == $dyndns['interface']) {
+ if ((empty($int)) || ($int == $dyndns['interface']) || (is_array($gwgroups[$dyndns['interface']]))) {
services_dyndns_configure_client($dyndns);
sleep(1);
- } elseif (is_array($gwgroups[$dyndns['interface']])){
- services_dyndns_configure_client($dyndns);
- sleep(1);
- } else {
- continue;
}
}
diff --git a/etc/inc/util.inc b/etc/inc/util.inc
index 81f2dc4..a86fe92 100644
--- a/etc/inc/util.inc
+++ b/etc/inc/util.inc
@@ -62,7 +62,7 @@ function isvalidproc($proc) {
/* sigkill a process by pid file */
/* return 1 for success and 0 for a failure */
function sigkillbypid($pidfile, $sig) {
- if (is_file($pidfile))
+ if (file_exists($pidfile))
return mwexec("/bin/pkill -{$sig} -F {$pidfile}", true);
return 0;
diff --git a/etc/rc.linkup b/etc/rc.linkup
index 23d7c9b..217fe65 100755
--- a/etc/rc.linkup
+++ b/etc/rc.linkup
@@ -39,9 +39,14 @@ require_once("interfaces.inc");
function handle_argument_group($iface, $argument2) {
global $config;
+ if (!is_array($config['interfaces'][$iface]))
+ return;
+
$ipaddr = $config['interfaces'][$iface]['ipaddr'];
- if (is_ipaddr($ipaddr) || empty($ipaddr)) {
- log_error("Hotplug event detected for {$iface} but ignoring since interface is configured with static IP ({$ipaddr})");
+ $ip6addr = $config['interfaces'][$iface]['ipaddrv6'];
+ if ((!empty($ipaddr) && is_ipaddrv4($ipaddr)) || (empty($ipaddr) && empty($ip6addr)) || (!empty($ip6addr) && is_ipaddrv6($ip6addr))) {
+ $friendly = convert_friendly_interface_to_friendly_descr($iface);
+ log_error("Hotplug event detected for {$friendly}({$iface}) but ignoring since interface is configured with static IP ({$ipaddr} {$ip6addr})");
interfaces_staticarp_configure($iface);
$iface = get_real_interface($iface);
interfaces_bring_up($iface);
@@ -75,28 +80,24 @@ global $g;
if (file_exists("{$g['varrun_path']}/booting")) {
/* ignore all linkup events */
} else {
- foreach($_SERVER['argv'] as $argv) {
- switch($argv) {
- case "start":
- $action = "start";
- break;
- case "stop":
- $action = "stop";
- break;
- case "/etc/rc.linkup":
- break;
- default:
- $interface = convert_real_interface_to_friendly_interface_name($argv);
- if($interface == "") {
- unset($interface);
- }
- break;
- }
- if(($action) && ($interface)) {
- handle_argument_group($interface, $action);
- unset ($action, $interface);
- }
+ if ($argc < 3) {
+ log_error("HOTPLUG event: The number of required parameters not passed!");
+ exit;
+ }
+ $action = $argv[1];
+ switch($action) {
+ case "start":
+ case "stop":
+ break;
+ default:
+ log_error("HOTPLUG event: The action parameter passed is wrong($action) only start/stop/up/down are allowed!");
+ exit;
+ /* NOTREACHED */
+ break;
}
+ $interface = convert_real_interface_to_friendly_interface_name($argv[2]);
+ if (!empty($interface))
+ handle_argument_group($interface, $action);
}
?>
diff --git a/etc/rc.start_packages b/etc/rc.start_packages
index 15f62e1..3d30587 100755
--- a/etc/rc.start_packages
+++ b/etc/rc.start_packages
@@ -54,8 +54,9 @@ if (is_array($config['installedpackages']['package'])) {
foreach($config['installedpackages']['package'] as $package) {
echo " Starting package {$package['name']}...";
sync_package($package['name']);
- start_service($package['name']);
- unset($rcfiles[RCFILEPREFIX . $package['name'] . ".sh"]);
+ $internal_name = get_pkg_internal_name($package);
+ start_service($internal_name);
+ unset($rcfiles[RCFILEPREFIX . strtolower($internal_name) . ".sh"]);
echo "done.\n";
}
}
OpenPOWER on IntegriCloud