aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/config/qosify/files/qosify-status
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/config/qosify/files/qosify-status')
-rw-r--r--package/network/config/qosify/files/qosify-status70
1 files changed, 70 insertions, 0 deletions
diff --git a/package/network/config/qosify/files/qosify-status b/package/network/config/qosify/files/qosify-status
new file mode 100644
index 0000000000..dc58232268
--- /dev/null
+++ b/package/network/config/qosify/files/qosify-status
@@ -0,0 +1,70 @@
+#!/bin/sh
+. /usr/share/libubox/jshn.sh
+
+dev_status() {
+ tc -s qdisc sh dev "$1" root
+ echo
+}
+
+common_status() {
+ json_get_vars ifname ingress egress
+
+ [ -n "$ifname" ] || return
+
+ [ "$egress" -gt 0 ] && {
+ echo "egress status:"
+ dev_status "$ifname"
+ }
+ [ "$ingress" -gt 0 ] && {
+ echo "ingress status:"
+ dev_status "$(printf %.16s "ifb-$ifname")"
+ }
+}
+
+is_active() {
+ json_get_vars active
+
+ [ "${active:-0}" -gt 0 ]
+}
+
+device_status() {
+ local name="$2"
+
+ json_select "$name"
+
+ if is_active; then
+ status="active"
+ else
+ status="not found"
+ fi
+
+ echo "===== device $name: $status ====="
+
+ is_active && common_status
+
+ json_select ..
+}
+
+interface_status() {
+ local name="$2"
+
+ json_select "$name"
+
+ if is_active; then
+ status="active"
+ elif ubus -S -t 0 wait_for "network.interface.$name"; then
+ status="down"
+ else
+ status="not found"
+ fi
+
+ echo "===== interface $name: $status ====="
+
+ is_active && common_status
+
+ json_select ..
+}
+
+json_load "$(ubus call qosify status)"
+json_for_each_item device_status devices
+json_for_each_item interface_status interfaces