diff options
Diffstat (limited to 'package/network/config/qosify/files/qosify-status')
-rw-r--r-- | package/network/config/qosify/files/qosify-status | 70 |
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 |