Merge pull request #22158 from TDT-AG/pr/20230920-mwan3
authorFlorian Eckert <fe@dev.tdt.de>
Tue, 26 Sep 2023 10:54:31 +0000 (12:54 +0200)
committerGitHub <noreply@github.com>
Tue, 26 Sep 2023 10:54:31 +0000 (12:54 +0200)
mwan3: update ubus and status view

net/mwan3/Makefile
net/mwan3/files/lib/mwan3/common.sh
net/mwan3/files/lib/mwan3/mwan3.sh
net/mwan3/files/usr/libexec/rpcd/mwan3

index b31f4ce34209cbc22ff8d3183c14ff38ac509e9c..9bfc24dbdedff98672cfb952fb6dc5ce1c27ef01 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mwan3
-PKG_VERSION:=2.11.8
+PKG_VERSION:=2.11.12
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>, \
                Aaron Goodman <aaronjg@alumni.stanford.edu>
index 29ace60506f934e41a538eba211ce16a0129f780..ecd45026e8db6c863889d4f3105726b0c4c3ff2f 100644 (file)
@@ -107,7 +107,7 @@ mwan3_get_mwan3track_status()
                        tracking="down"
                fi
        else
-               tracking="not enabled"
+               tracking="disabled"
        fi
        echo "$tracking"
 }
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()
index 3fce9b0d4d48cf570c2fa9770b164825e31aeda5..4bd2b631f6263bdcb2ca814fa6c29cc6d6db076c 100755 (executable)
@@ -106,14 +106,10 @@ get_mwan3_status() {
 
        config_get enabled "$iface" enabled 0
 
-       if [ -d "${MWAN3_STATUS_DIR}" ]; then
+       if [ -f "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS" ]; then
                network_get_uptime uptime "$iface"
                network_is_up "$iface" && up="1"
-               if [ -f "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS" ]; then
-                       status="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS")"
-               else
-                       status="notracking"
-               fi
+               status="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS")"
        else
                uptime=0
                up=0
@@ -131,6 +127,7 @@ get_mwan3_status() {
        json_add_string "status" "${status}"
        json_add_boolean "enabled" "${enabled}"
        json_add_boolean "running" "${running}"
+       json_add_string "tracking" "${track_status}"
        json_add_boolean "up" "${up}"
        json_add_array "track_ip"
        for file in $MWAN3TRACK_STATUS_DIR/${iface}/TRACK_*; do