5 LOG
="logger -t $(basename "$0")[$$] -p"
12 $LOG notice
"Stopping mwan3track for interface \"${INTERFACE}\""
13 if [ "$(pgrep -f "mwan3track
${INTERFACE}")" = "" ]; then
14 rm -rf "/var/run/mwan3track/${INTERFACE}" &> /dev
/null
16 if [ -z "$(ls -A "/var
/run
/mwan3track
")" ]; then
17 rm -rf "/var/run/mwan3track"
23 $LOG info
"Detect ifdown event on interface ${INTERFACE} (${DEVICE})"
28 local reliability count timeout interval failure_interval
29 local recovery_interval down up size
31 [ -z "$3" ] && echo "Error: should not be started manually" && exit 0
35 mkdir
-p /var
/run
/mwan3track
/$1
36 trap clean_up SIGINT SIGTERM
40 config_get reliability
$1 reliability
1
41 config_get count
$1 count
1
42 config_get timeout
$1 timeout
4
43 config_get interval
$1 interval
10
44 config_get down
$1 down
5
46 config_get size
$1 size
56
47 config_get failure_interval
$1 failure_interval
$interval
48 config_get recovery_interval
$1 recovery_interval
$interval
50 local score
=$
(($down+$up))
51 local track_ips
=$
(echo $
* | cut
-d ' ' -f 3-99)
57 echo "offline" > /var
/run
/mwan3track
/$1/STATUS
62 for track_ip
in $track_ips; do
63 ping -I $2 -c $count -W $timeout -s $size -q $track_ip &> /dev
/null
66 echo "up" > /var
/run
/mwan3track
/$1/TRACK_
${track_ip}
69 echo "down" > /var
/run
/mwan3track
/$1/TRACK_
${track_ip}
73 if [ $host_up_count -lt $reliability ]; then
76 if [ $score -lt $up ]; then
79 sleep_time
=$failure_interval
82 if [ $score -eq $up ]; then
83 echo "offline" > /var
/run
/mwan3track
/$1/STATUS
84 $LOG notice
"Interface $1 ($2) is offline"
85 env
-i ACTION
=ifdown INTERFACE
=$1 DEVICE
=$2 /sbin
/hotplug-call iface
89 if [ $score -lt $
(($down+$up)) ] && [ $lost -gt 0 ]; then
90 $LOG info
"Lost $(($lost*$count)) ping(s) on interface $1 ($2)"
96 if [ $score -gt $up ]; then
97 echo "online" > /var
/run
/mwan3track
/$1/STATUS
99 elif [ $score -le $up ]; then
100 sleep_time
=$recovery_interval
103 if [ $score -eq $up ]; then
104 $LOG notice
"Interface $1 ($2) is online"
105 env
-i ACTION
=ifup INTERFACE
=$1 DEVICE
=$2 /sbin
/hotplug-call iface
106 rm -rf "/var/run/mwan3track/${1}" &> /dev
/null
112 echo "${lost}" > /var
/run
/mwan3track
/$1/LOST
113 echo "${score}" > /var
/run
/mwan3track
/$1/SCORE
114 echo "${turn}" > /var
/run
/mwan3track
/$1/TURN
117 sleep "${sleep_time}" &
120 if [ "${IFDOWN_EVENT}" -eq 1 ]; then
122 echo "offline" > /var
/run
/mwan3track
/$1/STATUS