base-files: add 'isup' to the wifi script
[openwrt/staging/stintel.git] / package / base-files / files / sbin / wifi
index 29585389dfd67b4759d9c91ab38451f80b44c050..a3d3206ee732dc3ecc5345f7484ff67751944fcd 100755 (executable)
@@ -6,7 +6,7 @@
 
 usage() {
        cat <<EOF
-Usage: $0 [config|up|down|reconf|reload|status]
+Usage: $0 [config|up|down|reconf|reload|status|isup]
 enables (default), disables or configures devices not yet configured.
 EOF
        exit 1
@@ -21,6 +21,22 @@ ubus_wifi_cmd() {
        ubus call network.wireless "$cmd" "$(json_dump)"
 }
 
+wifi_isup() {
+       local dev="$1"
+
+       json_load "$(ubus_wifi_cmd "status" "$dev")"
+       json_get_keys devices
+
+       for device in $devices; do
+               json_select "$device"
+                       json_get_var up up
+                       [ $up -eq 0 ] && return 1
+               json_select ..
+       done
+
+       return 0
+}
+
 find_net_config() {(
        local vif="$1"
        local cfg
@@ -245,6 +261,7 @@ case "$1" in
        detect) wifi_detect_notice ;;
        config) wifi_config ;;
        status) ubus_wifi_cmd "status" "$2";;
+       isup) wifi_isup "$2"; exit $?;;
        reload) wifi_reload "$2";;
        reload_legacy) wifi_reload_legacy "$2";;
        --help|help) usage;;