network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; }
-network_get_device()
+__network_device()
{
local __var="$1"
local __iface="$2"
+ local __field="$3"
local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)"
[ -n "$__tmp" ] || return 1
json_load "$__tmp"
- json_get_var "$__var" device
+ json_get_var "$__var" "$__field"
+}
+
+network_is_up()
+{
+ local __up
+ __network_device __up "$1" up && [ $__up -eq 1 ]
+}
+
+network_get_device() { __network_device "$1" "$2" l3_device; }
+network_get_physdev() { __network_device "$1" "$2" device; }
- return 0
+
+__network_defer()
+{
+ local __device="$1"
+ local __defer="$2"
+
+ json_init
+ json_add_string name "$__device"
+ json_add_boolean defer "$__defer"
+
+ ubus call network.device set_state "$(json_dump)" 2>/dev/null
}
+
+network_defer_device() { __network_defer "$1" 1; }
+network_ready_device() { __network_defer "$1" 0; }