mwan3: don't call rpcd on 'mwan3 interfaces'
authorAaron Goodman <redacted>
Fri, 13 Nov 2020 00:21:04 +0000 (19:21 -0500)
committerAaron Goodman <redacted>
Mon, 16 Nov 2020 16:19:55 +0000 (11:19 -0500)
Allow `mwan3 interfaces` to get uptime via an internal function and
thus remove the dependency on rpcd for `mwan3 interface` calls.

Signed-off-by: Aaron Goodman <redacted>
net/mwan3/files/lib/mwan3/common.sh
net/mwan3/files/lib/mwan3/mwan3.sh
net/mwan3/files/usr/libexec/rpcd/mwan3

index 5c9b2a805e3396dfd2f2c0b0c64a6dd9128cd30d..3cb6f1a45b85f78d48df127466e9a2a4b1498ad3 100644 (file)
@@ -1,10 +1,5 @@
 #!/bin/sh
 
-get_uptime() {
-       local uptime=$(cat /proc/uptime)
-       echo "${uptime%%.*}"
-}
-
 IP4="ip -4"
 IP6="ip -6"
 SCRIPTNAME="$(basename "$0")"
@@ -180,3 +175,18 @@ mwan3_count_one_bits()
        done
        echo $count
 }
+
+get_uptime() {
+       local uptime=$(cat /proc/uptime)
+       echo "${uptime%%.*}"
+}
+
+get_online_time() {
+       local time_n time_u iface
+       iface="$1"
+       time_u="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/ONLINE" 2>/dev/null)"
+       [ -z "${time_u}" ] || [ "${time_u}" = "0" ] || {
+               time_n="$(get_uptime)"
+               echo $((time_n-time_u))
+       }
+}
index fcfda5b892e8be9ea140d4ee9ca4d1137f886e22..26bdcbcd2f0338b4aa92baeab2db58e71dc32e2b 100644 (file)
@@ -1053,15 +1053,8 @@ mwan3_report_iface_status()
        if [ "$result" = "offline" ]; then
                :
        elif [ $error -eq 0 ]; then
-               json_init
-               json_add_string section interfaces
-               json_add_string interface "$1"
-               json_load "$(ubus call mwan3 status "$(json_dump)")"
-               json_select "interfaces"
-               json_select "$1"
-               json_get_vars online uptime
-               json_select ..
-               json_select ..
+               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"
index 0d8693e64d7de1728ad82ca84e69f0d049d259a7..d4e7adb6f2aa3f73c0e98622d3a563c1fe695350 100755 (executable)
@@ -69,6 +69,26 @@ report_policies_v6() {
        done
 }
 
+get_age() {
+       local time_p time_u
+       iface="$1"
+       time_p="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/TIME")"
+       [ -z "${time_p}" ] || {
+               time_n="$(get_uptime)"
+               echo $((time_n-time_p))
+       }
+}
+
+get_offline_time() {
+       local time_n time_d iface
+       iface="$1"
+       time_d="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/OFFLINE")"
+       [ -z "${time_d}" ] || [ "${time_d}" = "0" ] || {
+               time_n="$(get_uptime)"
+               echo $((time_n-time_d))
+       }
+}
+
 get_mwan3_status() {
        local iface="${1}"
        local iface_select="${2}"
@@ -85,23 +105,9 @@ get_mwan3_status() {
 
        track_status="$(mwan3_get_mwan3track_status "$1")"
        [ "$track_status" = "active" ] && running="1"
-       time_p="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/TIME")"
-       [ -z "${time_p}" ] || {
-               time_n="$(get_uptime)"
-               let age=time_n-time_p
-       }
-
-       time_u="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/ONLINE")"
-       [ -z "${time_u}" ] || [ "${time_u}" = "0" ] || {
-               time_n="$(get_uptime)"
-               let online=time_n-time_u
-       }
-
-       time_d="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/OFFLINE")"
-       [ -z "${time_d}" ] || [ "${time_d}" = "0" ] || {
-               time_n="$(get_uptime)"
-               let offline=time_n-time_d
-       }
+       age=$(get_age "$iface")
+       online=$(get_online_time "$iface")
+       offline=$(get_offline_time "$iface")
 
        local uptime="0"
 
git clone https://git.99rst.org/PROJECT