kernel: fq_codel: dont reinit flow state
[openwrt.git] / package / netifd / files / lib / network / config.sh
index 129cb66..9128971 100755 (executable)
@@ -4,7 +4,22 @@
 . /usr/share/libubox/jshn.sh
 
 find_config() {
-       return
+       local device="$1"
+       local ifdev ifl3dev ifobj
+       for ifobj in `ubus list network.interface.\*`; do
+               interface="${ifobj##network.interface.}"
+               (
+                       json_load "$(ifstatus $interface)"
+                       json_get_var ifdev device
+                       json_get_var ifl3dev l3_device
+                       if [[ "$device" = "$ifdev" ]] || [[ "$device" = "$ifl3dev" ]]; then
+                               echo "$interface"
+                               exit 0
+                       else
+                               exit 1
+                       fi
+               ) && return
+       done
 }
 
 unbridge() {
@@ -13,8 +28,8 @@ unbridge() {
 
 ubus_call() {
        json_init
-       local _data="$(ubus call "$1" "$2")"
-       [ $? -ne 0 ] && return "$?"
+       local _data="$(ubus -S call "$1" "$2")"
+       [ -z "$_data" ] && return 1
        json_load "$_data"
        return 0
 }
@@ -22,14 +37,14 @@ ubus_call() {
 
 fixup_interface() {
        local config="$1"
-       local ifname
+       local ifname type device l3dev
 
        config_get type "$config" type
        config_get ifname "$config" ifname
        config_get device "$config" device "$ifname"
        [ "bridge" = "$type" ] && ifname="br-$config"
        config_set "$config" device "$ifname"
-       ubus_call "network.interface.$config" status
+       ubus_call "network.interface.$config" status || return 0
        json_get_var l3dev l3_device
        [ -n "$l3dev" ] && ifname="$l3dev"
        json_init