|
@ -24,6 +24,30 @@ if_down() { |
|
|
IFDOWN_EVENT=1 |
|
|
IFDOWN_EVENT=1 |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
validate_track_method() { |
|
|
|
|
|
case "$1" in |
|
|
|
|
|
ping) |
|
|
|
|
|
# Assume that ping is installed |
|
|
|
|
|
;; |
|
|
|
|
|
arping) |
|
|
|
|
|
which arping 1>/dev/null 2>&1 || { |
|
|
|
|
|
$LOG warn "Missing arping. Please install iputils-arping package." |
|
|
|
|
|
return 1 |
|
|
|
|
|
} |
|
|
|
|
|
;; |
|
|
|
|
|
httping) |
|
|
|
|
|
which httping 1>/dev/null 2>&1 || { |
|
|
|
|
|
$LOG warn "Missing httping. Please install httping package." |
|
|
|
|
|
return 1 |
|
|
|
|
|
} |
|
|
|
|
|
;; |
|
|
|
|
|
*) |
|
|
|
|
|
$LOG warn "Unsupported tracking method: $track_method" |
|
|
|
|
|
return 2 |
|
|
|
|
|
;; |
|
|
|
|
|
esac |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
main() { |
|
|
main() { |
|
|
local reliability count timeout interval failure_interval |
|
|
local reliability count timeout interval failure_interval |
|
|
local recovery_interval down up size |
|
|
local recovery_interval down up size |
|
@ -37,6 +61,11 @@ main() { |
|
|
trap if_down SIGUSR1 |
|
|
trap if_down SIGUSR1 |
|
|
|
|
|
|
|
|
config_load mwan3 |
|
|
config_load mwan3 |
|
|
|
|
|
config_get track_method $1 track_method ping |
|
|
|
|
|
validate_track_method $track_method || { |
|
|
|
|
|
$LOG warn "Using ping to track interface $INTERFACE avaliability" |
|
|
|
|
|
track_method=ping |
|
|
|
|
|
} |
|
|
config_get reliability $1 reliability 1 |
|
|
config_get reliability $1 reliability 1 |
|
|
config_get count $1 count 1 |
|
|
config_get count $1 count 1 |
|
|
config_get timeout $1 timeout 4 |
|
|
config_get timeout $1 timeout 4 |
|
@ -48,7 +77,7 @@ main() { |
|
|
config_get recovery_interval $1 recovery_interval $interval |
|
|
config_get recovery_interval $1 recovery_interval $interval |
|
|
|
|
|
|
|
|
local score=$(($down+$up)) |
|
|
local score=$(($down+$up)) |
|
|
local track_ips=$(echo $* | cut -d ' ' -f 3-99) |
|
|
|
|
|
|
|
|
local track_ips=$(echo $* | cut -d ' ' -f 4-99) |
|
|
local host_up_count=0 |
|
|
local host_up_count=0 |
|
|
local lost=0 |
|
|
local lost=0 |
|
|
local sleep_time=0 |
|
|
local sleep_time=0 |
|
@ -60,7 +89,14 @@ main() { |
|
|
sleep_time=$interval |
|
|
sleep_time=$interval |
|
|
|
|
|
|
|
|
for track_ip in $track_ips; do |
|
|
for track_ip in $track_ips; do |
|
|
ping -I $2 -c $count -W $timeout -s $size -q $track_ip &> /dev/null |
|
|
|
|
|
|
|
|
case "$track_method" in |
|
|
|
|
|
ping) |
|
|
|
|
|
ping -I $2 -c $count -W $timeout -s $size -q $track_ip &> /dev/null ;; |
|
|
|
|
|
arping) |
|
|
|
|
|
arping -I $2 -c $count -w $timeout -q $track_ip &> /dev/null ;; |
|
|
|
|
|
httping) |
|
|
|
|
|
httping -y $3 -c $count -t $timeout -q $track_ip &> /dev/null ;; |
|
|
|
|
|
esac |
|
|
if [ $? -eq 0 ]; then |
|
|
if [ $? -eq 0 ]; then |
|
|
let host_up_count++ |
|
|
let host_up_count++ |
|
|
echo "up" > /var/run/mwan3track/$1/TRACK_${track_ip} |
|
|
echo "up" > /var/run/mwan3track/$1/TRACK_${track_ip} |
|
|