Merge pull request #22158 from TDT-AG/pr/20230920-mwan3

mwan3: update ubus and status view
This commit is contained in:
Florian Eckert 2023-09-26 12:54:31 +02:00 committed by GitHub
commit f9403708f3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 31 deletions

View file

@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=mwan3 PKG_NAME:=mwan3
PKG_VERSION:=2.11.8 PKG_VERSION:=2.11.12
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>, \ PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>, \
Aaron Goodman <aaronjg@alumni.stanford.edu> Aaron Goodman <aaronjg@alumni.stanford.edu>

View file

@ -107,7 +107,7 @@ mwan3_get_mwan3track_status()
tracking="down" tracking="down"
fi fi
else else
tracking="not enabled" tracking="disabled"
fi fi
echo "$tracking" echo "$tracking"
} }

View file

@ -1082,7 +1082,8 @@ mwan3_get_iface_hotplug_state() {
mwan3_report_iface_status() 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" mwan3_get_iface_id id "$1"
network_get_device device "$1" network_get_device device "$1"
@ -1099,40 +1100,39 @@ mwan3_report_iface_status()
IPT="$IPT6" IPT="$IPT6"
fi fi
if [ -z "$id" ] || [ -z "$device" ]; then if [ -f "$MWAN3TRACK_STATUS_DIR/${1}/STATUS" ]; then
result="offline" status="$(cat "$MWAN3TRACK_STATUS_DIR/${1}/STATUS")"
else else
error=0 status="unknown"
[ -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))
fi fi
if [ "$result" = "offline" ]; then if [ "$status" = "online" ]; then
:
elif [ $error -eq 0 ]; then
online=$(get_online_time "$1") online=$(get_online_time "$1")
network_get_uptime uptime "$1" network_get_uptime uptime "$1"
online="$(printf '%02dh:%02dm:%02ds\n' $((online/3600)) $((online%3600/60)) $((online%60)))" 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)))" uptime="$(printf '%02dh:%02dm:%02ds\n' $((uptime/3600)) $((uptime%3600/60)) $((uptime%60)))"
result="$(mwan3_get_iface_hotplug_state $1) $online, uptime $uptime" 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 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 fi
tracking="$(mwan3_get_mwan3track_status $1)" 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() mwan3_report_policies()

View file

@ -106,14 +106,10 @@ get_mwan3_status() {
config_get enabled "$iface" enabled 0 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_get_uptime uptime "$iface"
network_is_up "$iface" && up="1" network_is_up "$iface" && up="1"
if [ -f "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS" ]; then status="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS")"
status="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS")"
else
status="notracking"
fi
else else
uptime=0 uptime=0
up=0 up=0
@ -131,6 +127,7 @@ get_mwan3_status() {
json_add_string "status" "${status}" json_add_string "status" "${status}"
json_add_boolean "enabled" "${enabled}" json_add_boolean "enabled" "${enabled}"
json_add_boolean "running" "${running}" json_add_boolean "running" "${running}"
json_add_string "tracking" "${track_status}"
json_add_boolean "up" "${up}" json_add_boolean "up" "${up}"
json_add_array "track_ip" json_add_array "track_ip"
for file in $MWAN3TRACK_STATUS_DIR/${iface}/TRACK_*; do for file in $MWAN3TRACK_STATUS_DIR/${iface}/TRACK_*; do