In some situation it is not enough to send a SIGTERM to mwan3track to
ask service to stop accurate. If this does not work send him a SIGKILL
to prevent mwan3track running more then once per interface.
Signed-off-by: Florian Eckert <redacted>
mwan3_track()
{
- local track_ip track_ips
+ local track_ip track_ips pid
mwan3_list_track_ips()
{
}
config_list_foreach $1 track_ip mwan3_list_track_ips
- kill $(pgrep -f "mwan3track $1 $2") &> /dev/null
+ for pid in $(pgrep -f "mwan3track $1 $2"); do
+ kill -TERM "$pid" > /dev/null 2>&1
+ sleep 1
+ kill -KILL "$pid" > /dev/null 2>&1
+ done
if [ -n "$track_ips" ]; then
[ -x /usr/sbin/mwan3track ] && /usr/sbin/mwan3track "$1" "$2" "$3" "$4" $track_ips &
fi
stop()
{
- local ipset route rule table IP IPT
+ local ipset route rule table IP IPT pid
- killall mwan3track &> /dev/null
+ for pid in $(pgrep -f "mwan3track"); do
+ kill -TERM "$pid" > /dev/null 2>&1
+ sleep 1
+ kill -KILL "$pid" > /dev/null 2>&1
+ done
config_load mwan3
config_foreach mwan3_track_clean interface
STATUS=$3
SRC_IP=$4
mkdir -p /var/run/mwan3track/$1
- trap clean_up SIGINT SIGTERM
- trap if_down SIGUSR1
+ trap clean_up TERM
+ trap if_down USR1
config_load mwan3
config_get track_method $1 track_method ping