Commit 903eb61c authored by Franco Fichtner's avatar Franco Fichtner

inc: introduce the novelty concept of default values for arguments

... thus reducing the need for sigkillbypid().  :)
parent b6e987dc
......@@ -273,7 +273,7 @@ function captiveportal_allowedhostname_configure() {
// @file_put_contents($cp_filterdns_filename, $cp_filterdns_conf);
// unset($cp_filterdns_conf);
// if (isvalidpid("{$g['varrun_path']}/filterdns-{$cpzone}-cpah.pid"))
// sigkillbypid("{$g['varrun_path']}/filterdns-{$cpzone}-cpah.pid", "HUP");
// killbypid("{$g['varrun_path']}/filterdns-{$cpzone}-cpah.pid", "HUP");
// else
// mwexec("/usr/local/sbin/filterdns -p {$g['varrun_path']}/filterdns-{$cpzone}-cpah.pid -i 300 -c {$cp_filterdns_filename} -y {$cpzone} -d 1");
// } else {
......
......@@ -327,9 +327,9 @@ function filter_configure_sync($delete_states_if_needed = true)
if(!empty($filterdns)) {
@file_put_contents("{$g['varetc_path']}/filterdns.conf", implode("", $filterdns));
unset($filterdns);
if (isvalidpid("{$g['varrun_path']}/filterdns.pid"))
sigkillbypid("{$g['varrun_path']}/filterdns.pid", "HUP");
else {
if (isvalidpid("{$g['varrun_path']}/filterdns.pid")) {
killbypid("{$g['varrun_path']}/filterdns.pid", 'HUP');
} else {
/*
* FilterDNS has three debugging levels. The default choosen is 1.
* Availabe are level 2 and greater then 2.
......@@ -1974,7 +1974,7 @@ function filter_nat_rules_generate() {
if (!$helpers) {
mwexec("/usr/sbin/inetd -wW -R 0 -a 127.0.0.1 /var/etc/inetd.conf");
} else {
sigkillbypid("/var/run/inetd.pid", "HUP");
killbypid('/var/run/inetd.pid', 'HUP');
}
}
......
......@@ -342,32 +342,32 @@ EOD;
@chown("{$g['vardb_path']}/rrd", "nobody");
/* Restart apinger process */
if (isvalidpid("{$g['varrun_path']}/apinger.pid"))
sigkillbypid("{$g['varrun_path']}/apinger.pid", "HUP");
else {
if (isvalidpid("{$g['varrun_path']}/apinger.pid")) {
killbypid("{$g['varrun_path']}/apinger.pid", 'HUP');
} else {
/* start a new apinger process */
@unlink("{$g['varrun_path']}/apinger.status");
sleep(1);
mwexec_bg("/usr/local/sbin/apinger -c {$g['varetc_path']}/apinger.conf");
sleep(1);
sigkillbypid("{$g['varrun_path']}/apinger.pid", "USR1");
killbypid("{$g['varrun_path']}/apinger.pid", 'USR1');
}
return 0;
}
/* return the status of the apinger targets as a array */
function return_gateways_status($byname = false) {
function return_gateways_status($byname = false)
{
global $config, $g;
$apingerstatus = array();
/* Always get the latest status from apinger */
if (file_exists("{$g['varrun_path']}/apinger.pid"))
sigkillbypid("{$g['varrun_path']}/apinger.pid", "USR1");
killbypid("{$g['varrun_path']}/apinger.pid", 'USR1');
if (file_exists("{$g['varrun_path']}/apinger.status")) {
$apingerstatus = file("{$g['varrun_path']}/apinger.status");
} else
$apingerstatus = array();
}
$status = array();
foreach($apingerstatus as $line) {
......
......@@ -1297,7 +1297,7 @@ function interface_bring_down($interface = "wan", $destroy = false, $ifacecfg =
case "dhcp6":
$pidv6 = find_dhcp6c_process($realif);
if ($pidv6) {
sigkillbypid($pidv6, 'TERM');
killbypid($pidv6);
}
sleep(3);
unlink_if_exists("{$g['varetc_path']}/dhcp6c_{$interface}.conf");
......@@ -1450,7 +1450,7 @@ function handle_pppoe_reset($post_array) {
if (empty($post_array['pppoe-reset-type'])) {
if (isset($itemhash))
unset($config['cron']['item'][$itemhash['ID']]);
sigkillbypid("{$g['varrun_path']}/cron.pid", "HUP");
killbypid("{$g['varrun_path']}/cron.pid", 'HUP');
return;
}
......@@ -2788,7 +2788,7 @@ function kill_dhclient_process($interface)
while ((($pid = find_dhclient_process($interface)) != 0) && ($i < 3)) {
/* 3rd time make it die for sure */
$sig = ($i == 2 ? 'KILL' : 'TERM');
sigkillbypid($pid, $sig);
killbypid($pid, $sig);
sleep(1);
$i++;
}
......@@ -3221,7 +3221,7 @@ function interface_track6_configure($interface = "lan", $wancfg, $linkupevent =
$parentrealif = get_real_interface($wancfg['track6-interface']);
$pidv6 = find_dhcp6c_process($parentrealif);
if ($pidv6) {
sigkillbypid($pidv6, 'HUP');
killbypid($pidv6, 'HUP');
}
}
break;
......@@ -5135,9 +5135,10 @@ EOD;
@file_put_contents($cron_file, $cron_cmd);
chmod($cron_file, 0755);
sigkillbypid("{$g['varrun_path']}/cron.pid", "HUP");
} else
killbypid("{$g['varrun_path']}/cron.pid", 'HUP');
} else {
unlink_if_exists($cron_file);
}
}
function get_vip_descr($ipaddress)
......
......@@ -825,7 +825,7 @@ function openvpn_restart($mode, $settings) {
unlink($pfile);
/* send a term signal to the process */
sigkillbypid($pid, 'TERM');
killbypid($pid);
/* wait until the process exits */
while(isvalidpid($pid)) {
......@@ -883,7 +883,7 @@ function openvpn_delete($mode, & $settings) {
unlink($pfile);
/* send a term signal to the process */
sigkillbypid($pid, 'TERM');
killbypid($pid);
}
/* remove the device from the openvpn group */
......
......@@ -770,7 +770,7 @@ function reload_ttys()
{
/* Send a HUP signal to init will make it reload /etc/ttys */
require_once('util.inc');
sigkillbypid(1, 'HUP');
killbypid(1, 'HUP');
}
/* DHCP enabled on any interfaces? */
......
......@@ -312,10 +312,11 @@ function services_radvd_configure($blacklist = array())
unset($radvdconf);
if (count($radvdifs) > 0) {
if (isvalidpid("{$g['varrun_path']}/radvd.pid"))
sigkillbypid("{$g['varrun_path']}/radvd.pid", "HUP");
else
if (isvalidpid("{$g['varrun_path']}/radvd.pid")) {
killbypid("{$g['varrun_path']}/radvd.pid", 'HUP');
} else {
mwexec("/usr/local/sbin/radvd -p {$g['varrun_path']}/radvd.pid -C {$g['varetc_path']}/radvd.conf -m syslog");
}
} else {
/* we need to shut down the radvd cleanly, it will send out the prefix
* information with a lifetime of 0 to notify clients of a (possible) new prefix */
......@@ -1742,8 +1743,7 @@ function services_dnsmasq_configure()
);
/* kill any running dnsmasq */
if (file_exists("{$g['varrun_path']}/dnsmasq.pid"))
sigkillbypid("{$g['varrun_path']}/dnsmasq.pid", "TERM");
killbypid("{$g['varrun_path']}/dnsmasq.pid");
if (isset($config['dnsmasq']['enable'])) {
......@@ -1877,13 +1877,13 @@ function services_dnsmasq_configure()
return $return;
}
function services_unbound_configure() {
function services_unbound_configure()
{
global $config, $g;
$return = 0;
// kill any running Unbound instance
if (file_exists("{$g['varrun_path']}/unbound.pid"))
sigkillbypid("{$g['varrun_path']}/unbound.pid", "TERM");
killbypid("{$g['varrun_path']}/unbound.pid");
if (isset($config['unbound']['enable'])) {
if (file_exists("/var/run/booting"))
......@@ -1910,7 +1910,7 @@ function services_snmpd_configure()
global $config, $g;
/* kill any running snmpd */
sigkillbypid("{$g['varrun_path']}/snmpd.pid", "TERM");
killbypid("{$g['varrun_path']}/snmpd.pid");
sleep(2);
if(is_process_running("bsnmpd"))
mwexec("/usr/bin/killall bsnmpd", true);
......@@ -2284,7 +2284,7 @@ function configure_cron() {
unset($crontab_contents);
/* do a HUP kill to force sync changes */
sigkillbypid("{$g['varrun_path']}/cron.pid", "HUP");
killbypid("{$g['varrun_path']}/cron.pid", 'HUP');
}
......
......@@ -299,13 +299,11 @@ function system_hosts_generate()
}
/*
* Do not remove this because dhcpleases monitors with kqueue it needs to be
* killed before writing to hosts files.
* Do not remove this because dhcpleases monitors with kqueue
* it needs to be * killed before writing to hosts files.
*/
if (file_exists("{$g['varrun_path']}/dhcpleases.pid")) {
sigkillbypid("{$g['varrun_path']}/dhcpleases.pid", "TERM");
@unlink("{$g['varrun_path']}/dhcpleases.pid");
}
killbypid("{$g['varrun_path']}/dhcpleases.pid");
$fd = fopen('/etc/hosts', 'w');
if (!$fd) {
log_error("Error: cannot open hosts file in system_hosts_generate().\n");
......@@ -337,7 +335,7 @@ function system_dhcpleases_configure()
@touch("{$g['dhcpd_chroot_path']}/var/db/dhcpd.leases");
}
if (isvalidpid("{$g['varrun_path']}/dhcpleases.pid")) {
sigkillbypid("{$g['varrun_path']}/dhcpleases.pid", "HUP");
killbypid("{$g['varrun_path']}/dhcpleases.pid", 'HUP');
} else {
/* To ensure we do not start multiple instances of dhcpleases, perform some clean-up first. */
killbyname('dhcpleases');
......@@ -358,8 +356,7 @@ function system_dhcpleases_configure()
);
}
} else {
sigkillbypid("{$g['varrun_path']}/dhcpleases.pid", "TERM");
@unlink("{$g['varrun_path']}/dhcpleases.pid");
killbypid("{$g['varrun_path']}/dhcpleases.pid");
}
}
......@@ -555,10 +552,11 @@ function system_staticroutes_configure($interface = "", $update_dns = false) {
file_put_contents("{$g['varetc_path']}/filterdns-route.hosts", $hostnames);
unset($hostnames);
if (isvalidpid("{$g['varrun_path']}/filterdns-route.pid"))
sigkillbypid("{$g['varrun_path']}/filterdns-route.pid", "HUP");
else
if (isvalidpid("{$g['varrun_path']}/filterdns-route.pid")) {
killbypid("{$g['varrun_path']}/filterdns-route.pid", 'HUP');
} else {
mwexec("/usr/local/sbin/filterdns -p {$g['varrun_path']}/filterdns-route.pid -i {$interval} -c {$g['varetc_path']}/filterdns-route.hosts -d 1");
}
} else {
killbypid("{$g['varrun_path']}/filterdns-route.pid");
@unlink("{$g['varrun_path']}/filterdns-route.pid");
......@@ -777,10 +775,11 @@ EOD;
$syslogd_extra = "-f {$g['varetc_path']}/syslog.conf {$sourceip}";
}
if (isvalidpid("{$g['varrun_path']}/syslog.pid"))
sigkillbypid("{$g['varrun_path']}/syslog.pid", "HUP");
else
if (isvalidpid("{$g['varrun_path']}/syslog.pid")) {
killbypid("{$g['varrun_path']}/syslog.pid", 'HUP');
} else {
$retval = mwexec_bg("/usr/local/sbin/syslogd -s -c -c -l {$g['dhcpd_chroot_path']}/var/run/log -P {$g['varrun_path']}/syslog.pid {$syslogd_extra}");
}
if (file_exists("/var/run/booting"))
echo gettext("done.") . "\n";
......
......@@ -26,8 +26,15 @@
POSSIBILITY OF SUCH DAMAGE.
*/
function killbypid($pidfile) {
return sigkillbypid($pidfile, "TERM");
function killbypid($pidfile, $sig = 'TERM')
{
/* return 1 for success and 0 for a failure */
if (file_exists($pidfile)) {
return mwexecf('/bin/pkill -%s -F %s', array($sig, $pidfile), true);
}
return 0;
}
function isvalidpid($pidfile) {
......@@ -46,15 +53,6 @@ function is_process_running($process)
return (intval($retval) == 0);
}
/* sigkill a process by pid file */
/* return 1 for success and 0 for a failure */
function sigkillbypid($pidfile, $sig) {
if (file_exists($pidfile))
return mwexec("/bin/pkill " . escapeshellarg("-{$sig}") . " -F {$pidfile}", true);
return 0;
}
/* kill a process by name */
function killbyname($procname)
{
......
......@@ -840,9 +840,9 @@ EOD;
file_put_contents("/usr/local/etc/filterdns-ipsec.hosts", $hostnames);
unset($hostnames);
if (isvalidpid("{$g['varrun_path']}/filterdns-ipsec.pid"))
sigkillbypid("{$g['varrun_path']}/filterdns-ipsec.pid", "HUP");
else {
if (isvalidpid("{$g['varrun_path']}/filterdns-ipsec.pid")) {
killbypid("{$g['varrun_path']}/filterdns-ipsec.pid", 'HUP');
} else {
mwexec("/usr/local/sbin/filterdns -p {$g['varrun_path']}/filterdns-ipsec.pid -i {$interval} -c /usr/local/etc/filterdns-ipsec.hosts -d 1");
}
} else {
......
......@@ -789,7 +789,7 @@ if ($_POST['apply']) {
if ($wancfg['ipaddrv6'] == "dhcp6") {
$pid = find_dhcp6c_process($wancfg['if']);
if ($pid) {
sigkillbypid($pid, 'TERM');
killbypid($pid);
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment