| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #!/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
|