5 LOG
="/usr/bin/logger -t $(basename "$0")[$$] -p"
9 $LOG notice
"Stopping mwan3track for interface \"${INTERFACE}\""
10 rm "/var/run/mwan3track-${INTERFACE}.pid" &> /dev
/null
11 rm -rf "/var/run/mwan3track/${INTERFACE}" &> /dev
/null
12 if [ -z "$(ls -A "/var
/run
/mwan3track
")" ]; then
13 rm -rf "/var/run/mwan3track"
19 local reliability count timeout interval failure_interval
20 local recovery_interval down up size
22 [ -z "$3" ] && echo "Error: should not be started manually" && exit 0
25 echo "$$" > /var
/run
/mwan3track-
$1.pid
26 mkdir
-p /var
/run
/mwan3track
/$1
27 trap clean_up SIGINT SIGTERM
30 config_get reliability
$1 reliability
1
31 config_get count
$1 count
1
32 config_get timeout
$1 timeout
4
33 config_get interval
$1 interval
10
34 config_get down
$1 down
5
36 config_get size
$1 size
56
37 config_get failure_interval
$1 failure_interval
$interval
38 config_get recovery_interval
$1 recovery_interval
$interval
40 local score
=$
(($down+$up))
41 local track_ips
=$
(echo $
* | cut
-d ' ' -f 3-99)
47 echo "offline" > /var
/run
/mwan3track
/$1/STATUS
52 for track_ip
in $track_ips; do
53 ping -I $2 -c $count -W $timeout -s $size -q $track_ip &> /dev
/null
56 echo "up" > /var
/run
/mwan3track
/$1/TRACK_
${track_ip}
59 echo "down" > /var
/run
/mwan3track
/$1/TRACK_
${track_ip}
63 if [ $host_up_count -lt $reliability ]; then
66 if [ $score -lt $up ]; then
69 sleep_time
=$failure_interval
72 if [ $score -eq $up ]; then
73 echo "offline" > /var
/run
/mwan3track
/$1/STATUS
74 $LOG notice
"Interface $1 ($2) is offline"
75 env
-i ACTION
=ifdown INTERFACE
=$1 DEVICE
=$2 /sbin
/hotplug-call iface
79 if [ $score -lt $
(($down+$up)) ] && [ $lost -gt 0 ]; then
80 $LOG info
"Lost $(($lost*$count)) ping(s) on interface $1 ($2)"
86 if [ $score -gt $up ]; then
87 echo "online" > /var
/run
/mwan3track
/$1/STATUS
89 elif [ $score -le $up ]; then
90 sleep_time
=$recovery_interval
93 if [ $score -eq $up ]; then
94 $LOG notice
"Interface $1 ($2) is online"
95 env
-i ACTION
=ifup INTERFACE
=$1 DEVICE
=$2 /sbin
/hotplug-call iface
96 rm /var
/run
/mwan3track-
$1.pid
97 rm -rf "/var/run/mwan3track/${1}" &> /dev
/null
103 echo "${lost}" > /var
/run
/mwan3track
/$1/LOST
104 echo "${score}" > /var
/run
/mwan3track
/$1/SCORE
105 echo "${turn}" > /var
/run
/mwan3track
/$1/TURN