mwan3: refactoring mwan3_report_iface_status output 22158/head
authorFlorian Eckert <fe@dev.tdt.de>
Fri, 15 Sep 2023 10:21:57 +0000 (12:21 +0200)
committerFlorian Eckert <fe@dev.tdt.de>
Wed, 20 Sep 2023 14:10:34 +0000 (16:10 +0200)
The tracking and interface status was mixed up in the report. To fix
this, the interface status and the tracking status are now used
directly. The online, uptime and error information are appended to the
status line if needed. If certain routing tables and routing rules are
missing, the error number is also given.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
net/mwan3/Makefile
net/mwan3/files/lib/mwan3/mwan3.sh

index d6d2075aa72a7fef886d08b944d3ae835f24d284..9bfc24dbdedff98672cfb952fb6dc5ce1c27ef01 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mwan3
-PKG_VERSION:=2.11.11
+PKG_VERSION:=2.11.12
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>, \
                Aaron Goodman <aaronjg@alumni.stanford.edu>
index a3e7c009851d7f930726e3804637990af47d8345..c69f381ea851345e5182e85cd741e0eacee8e3e0 100644 (file)
@@ -1082,7 +1082,8 @@ mwan3_get_iface_hotplug_state() {
 
 mwan3_report_iface_status()
 {
-       local device result tracking IP IPT error
+       local device result tracking IP IPT
+       local status online uptime result
 
        mwan3_get_iface_id id "$1"
        network_get_device device "$1"
@@ -1099,40 +1100,39 @@ mwan3_report_iface_status()
                IPT="$IPT6"
        fi
 
-       if [ -z "$id" ] || [ -z "$device" ]; then
-               result="offline"
+       if [ -f "$MWAN3TRACK_STATUS_DIR/${1}/STATUS" ]; then
+               status="$(cat "$MWAN3TRACK_STATUS_DIR/${1}/STATUS")"
        else
-               error=0
-               [ -n "$($IP rule | awk '$1 == "'$((id+1000)):'"')" ] ||
-                       error=$((error+1))
-               [ -n "$($IP rule | awk '$1 == "'$((id+2000)):'"')" ] ||
-                       error=$((error+2))
-               [ -n "$($IP rule | awk '$1 == "'$((id+3000)):'"')" ] ||
-                       error=$((error+4))
-               [ -n "$($IPT -S mwan3_iface_in_$1 2> /dev/null)" ] ||
-                       error=$((error+8))
-               [ -n "$($IP route list table $id default dev $device 2> /dev/null)" ] ||
-                       error=$((error+16))
+               status="unknown"
        fi
 
-       if [ "$result" = "offline" ]; then
-               :
-       elif [ $error -eq 0 ]; then
+       if [ "$status" = "online" ]; then
                online=$(get_online_time "$1")
                network_get_uptime uptime "$1"
                online="$(printf '%02dh:%02dm:%02ds\n' $((online/3600)) $((online%3600/60)) $((online%60)))"
                uptime="$(printf '%02dh:%02dm:%02ds\n' $((uptime/3600)) $((uptime%3600/60)) $((uptime%60)))"
                result="$(mwan3_get_iface_hotplug_state $1) $online, uptime $uptime"
-       elif [ $error -gt 0 ] && [ $error -ne 31 ]; then
-               result="error (${error})"
-       elif [ "$enabled" = "1" ]; then
-               result="offline"
        else
-               result="disabled"
+               result=0
+               [ -n "$($IP rule | awk '$1 == "'$((id+1000)):'"')" ] ||
+                       result=$((result+1))
+               [ -n "$($IP rule | awk '$1 == "'$((id+2000)):'"')" ] ||
+                       result=$((result+2))
+               [ -n "$($IP rule | awk '$1 == "'$((id+3000)):'"')" ] ||
+                       result=$((result+4))
+               [ -n "$($IPT -S mwan3_iface_in_$1 2> /dev/null)" ] ||
+                       result=$((result+8))
+               [ -n "$($IP route list table $id default dev $device 2> /dev/null)" ] ||
+                       result=$((result+16))
+               [ "$result" = "0" ] && result=""
        fi
 
        tracking="$(mwan3_get_mwan3track_status $1)"
-       echo " interface $1 is $result and tracking is $tracking"
+       if [ -n "$result" ]; then
+               echo " interface $1 is $status and tracking is $tracking ($result)"
+       else
+               echo " interface $1 is $status and tracking is $tracking"
+       fi
 }
 
 mwan3_report_policies()