lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

mwan3track (1420B)


      1 #!/bin/sh
      2 
      3 [ -z "$12" ] && echo "Error: should not be started manually" && exit 0
      4 
      5 if [ -e /var/run/mwan3track-$1.pid ] ; then
      6 	kill $(cat /var/run/mwan3track-$1.pid) &> /dev/null
      7 	rm /var/run/mwan3track-$1.pid &> /dev/null
      8 fi
      9 
     10 echo "$$" > /var/run/mwan3track-$1.pid
     11 
     12 score=$(($7+$8))
     13 track_ips=$(echo $* | cut -d ' ' -f 12-99)
     14 host_up_count=0
     15 lost=0
     16 sleep_time=0
     17 
     18 while true; do
     19 
     20 	sleep_time=$6
     21 
     22 	for track_ip in $track_ips; do
     23 		ping -I $2 -c $4 -W $5 -s $9 -q $track_ip &> /dev/null
     24 		if [ $? -eq 0 ]; then
     25 			let host_up_count++
     26 		else
     27 			let lost++
     28 		fi
     29 	done
     30 
     31 	if [ $host_up_count -lt $3 ]; then
     32 		let score--
     33 
     34 		if [ $score -lt $8 ]; then
     35 			score=0
     36 		else
     37 			sleep_time=$10
     38 		fi
     39 
     40 		if [ $score -eq $8 ]; then
     41 
     42 			logger -t mwan3track -p notice "Interface $1 ($2) is offline"
     43 			env -i ACTION=ifdown INTERFACE=$1 DEVICE=$2 /sbin/hotplug-call iface
     44 			score=0
     45 
     46 		fi
     47 
     48 	else
     49 
     50 		if [ $score -lt $(($7+$8)) ] && [ $lost -gt 0 ]; then
     51 
     52 			logger -t mwan3track -p info "Lost $(($lost*$4)) ping(s) on interface $1 ($2)"
     53 
     54 		fi
     55 
     56 		let score++
     57 		lost=0
     58 
     59 		if [ $score -gt $8 ]; then
     60 			score=$(($7+$8))
     61 		elif [ $score -le $8 ]; then
     62 			sleep_time=$11
     63 		fi
     64 
     65 		if [ $score -eq $8 ]; then
     66 
     67 			logger -t mwan3track -p notice "Interface $1 ($2) is online"
     68 			env -i ACTION=ifup INTERFACE=$1 DEVICE=$2 /sbin/hotplug-call iface
     69 			rm /var/run/mwan3track-$1.pid
     70 			exit 0
     71 		fi
     72 	fi
     73 
     74 	host_up_count=0
     75 	sleep $sleep_time
     76 done
     77 
     78 exit 1