net/mwan3: add downtime ubus information
authorFlorian Eckert <redacted>
Tue, 9 Oct 2018 06:32:03 +0000 (08:32 +0200)
committerFlorian Eckert <redacted>
Fri, 12 Oct 2018 06:15:36 +0000 (08:15 +0200)
Get downtime information for the tracked mwan3 wan interfaces.
The information shows how long this interface is in disconnected state.

Signed-off-by: Florian Eckert <redacted>
net/mwan3/files/usr/libexec/rpcd/mwan3
net/mwan3/files/usr/sbin/mwan3track

index a4b33efd17bb6479159073e9c4d95a8d1e2dbd2f..a9b31f222f4bed95cdad66e06a3d0f703f93b1a6 100755 (executable)
@@ -37,7 +37,8 @@ get_mwan3_status() {
        local running="0"
        local age=0
        local uptime=0
-       local pid device time_p time_n time_u
+       local downtime=0
+       local pid device time_p time_n time_u time_d
 
        network_get_device device $1
 
@@ -59,9 +60,16 @@ get_mwan3_status() {
                        let uptime=time_n-time_u
                }
 
+               time_d="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/DOWNTIME")"
+               [ -z "${time_d}" ] || [ "${time_d}" = "0" ] || {
+                       time_n="$(get_uptime)"
+                       let downtime=time_n-time_d
+               }
+
                json_add_object "${iface}"
                json_add_int age "$age"
                json_add_int uptime "${uptime}"
+               json_add_int downtime "${downtime}"
                json_add_int "score" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/SCORE")"
                json_add_int "lost" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/LOST")"
                json_add_int "turn" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/TURN")"
index 725e1086dfe4c89307889a533f8e45e401379bf9..4208784725fac630f00fc9ac36af1fd7781d1484 100755 (executable)
@@ -109,9 +109,11 @@ main() {
        if [ "$STATUS" = "unknown" ]; then
                echo "unknown" > /var/run/mwan3track/$1/STATUS
                echo "0" > /var/run/mwan3track/$1/UPTIME
+               echo "$(get_uptime)" > /var/run/mwan3track/$1/DOWNTIME
                score=0
        else
                echo "online" > /var/run/mwan3track/$1/STATUS
+               echo "0" > /var/run/mwan3track/$1/DOWNTIME
                echo "$(get_uptime)" > /var/run/mwan3track/$1/UPTIME
                env -i ACTION="connected" INTERFACE="$1" DEVICE="$2" /sbin/hotplug-call iface
        fi
@@ -202,6 +204,7 @@ main() {
                        if [ $score -eq $up ]; then
                                echo "offline" > /var/run/mwan3track/$1/STATUS
                                echo "0" > /var/run/mwan3track/$1/UPTIME
+                               echo "$(get_uptime)" > /var/run/mwan3track/$1/DOWNTIME
                                $LOG notice "Interface $1 ($2) is offline"
                                env -i ACTION=ifdown INTERFACE=$1 DEVICE=$2 /sbin/hotplug-call iface
                                env -i ACTION="disconnected" INTERFACE="$1" DEVICE="$2" /sbin/hotplug-call iface
@@ -243,6 +246,7 @@ main() {
 
                if [ "${IFDOWN_EVENT}" -eq 1 ]; then
                        echo "offline" > /var/run/mwan3track/$1/STATUS
+                       echo "$(get_uptime)" > /var/run/mwan3track/$1/DOWNTIME
                        echo "0" > /var/run/mwan3track/$1/UPTIME
                        $LOG notice "Interface $1 ($2) is offline"
                        env -i ACTION="disconnected" INTERFACE="$1" DEVICE="$2" /sbin/hotplug-call iface
git clone https://git.99rst.org/PROJECT