mwan3: refactoring mwan3track action handling
authorFlorian Eckert <fe@dev.tdt.de>
Mon, 28 Nov 2022 09:13:25 +0000 (10:13 +0100)
committerFlorian Eckert <fe@dev.tdt.de>
Mon, 8 May 2023 07:47:08 +0000 (09:47 +0200)
Refactoring the score handling, so that only one action could take place
during run. The behaviour should be more comprehensible, since several
score actions are not processed at the same time.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
net/mwan3/files/usr/sbin/mwan3track

index 89654f86ba05658cd23a6ab1008c8a48a137f1b5..c1a455b2e8eee9405f115a962c7d20349312bcf4 100755 (executable)
@@ -351,34 +351,32 @@ main() {
                        if [ $score -lt $up ]; then
                                score=0
                                [ ${keep_failure_interval} -eq 1 ] && sleep_time=$failure_interval
-                       else
+                       elif [ $score -eq $up ]; then
                                disconnecting
                                sleep_time=$failure_interval
-                       fi
-
-                       if [ $score -eq $up ]; then
                                disconnected
-                               score=0
+                       elif [ $score -gt $up ]; then
+                               disconnecting
+                               sleep_time=$failure_interval
                        fi
                else
                        if [ $score -lt $((down+up)) ] && [ $lost -gt 0 ]; then
-                               connecting
                                LOG info "Lost $((lost*count)) ping(s) on interface $INTERFACE ($DEVICE). Current score: $score"
                        fi
 
                        let score++
                        lost=0
 
-                       if [ $score -gt $up ]; then
-                               echo "online" > $MWAN3TRACK_STATUS_DIR/$INTERFACE/STATUS
-                               score=$((down+up))
-                       elif [ $score -le $up ]; then
+                       if [ $score -lt $up ]; then
+                               connecting
+                               sleep_time=$recovery_interval
+                       elif [ $score -eq $up ]; then
                                connecting
                                sleep_time=$recovery_interval
-                       fi
-
-                       if [ $score -eq $up ]; then
                                connected
+                       elif [ $score -gt $up ]; then
+                               echo "online" > $MWAN3TRACK_STATUS_DIR/$INTERFACE/STATUS
+                               score=$((down+up))
                        fi
                fi