From f021b9416b794e5ffacb9f190bbb56b5f5b11bf2 Mon Sep 17 00:00:00 2001 From: Florian Eckert Date: Fri, 15 Sep 2023 12:21:57 +0200 Subject: [PATCH] mwan3: refactoring mwan3_report_iface_status output 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 --- net/mwan3/Makefile | 2 +- net/mwan3/files/lib/mwan3/mwan3.sh | 46 +++++++++++++++--------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/net/mwan3/Makefile b/net/mwan3/Makefile index d6d2075aa7..9bfc24dbde 100644 --- a/net/mwan3/Makefile +++ b/net/mwan3/Makefile @@ -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 , \ Aaron Goodman diff --git a/net/mwan3/files/lib/mwan3/mwan3.sh b/net/mwan3/files/lib/mwan3/mwan3.sh index a3e7c00985..c69f381ea8 100644 --- a/net/mwan3/files/lib/mwan3/mwan3.sh +++ b/net/mwan3/files/lib/mwan3/mwan3.sh @@ -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() -- 2.30.2