base-files: network.sh: gracefully handle missing network.interface ubus ns
[openwrt/staging/chunkeey.git] / package / base-files / files / lib / functions / network.sh
index 08cce49df22059c4b86c11b912caa4c7d112b799..d7fd2dea57308721425f89d4b8c38c7b8f1ccc70 100644 (file)
@@ -6,10 +6,16 @@
 __network_ifstatus() {
        local __tmp
 
-       [ -z "$__NETWORK_CACHE" ] && \
-               export __NETWORK_CACHE="$(ubus call network.interface dump)"
-
-       __tmp="$(jsonfilter ${4:+-F "$4"} ${5:+-l "$5"} -s "$__NETWORK_CACHE" -e "$1=@.interface${2:+[@.interface='$2']}$3")"
+       [ -z "$__NETWORK_CACHE" ] && {
+               __tmp="$(ubus call network.interface dump 2>&1)"
+               case "$?" in
+                       4) : ;;
+                       0) export __NETWORK_CACHE="$__tmp" ;;
+                       *) echo "$__tmp" >&2 ;;
+               esac
+       }
+
+       __tmp="$(jsonfilter ${4:+-F "$4"} ${5:+-l "$5"} -s "${__NETWORK_CACHE:-{}}" -e "$1=@.interface${2:+[@.interface='$2']}$3")"
 
        [ -z "$__tmp" ] && \
                unset "$1" && \