base-files: let network_get_device() return the l3 interface, introduce network_get_p...
[openwrt/openwrt.git] / package / base-files / files / lib / functions / network.sh
index 1b42133ba2379b5eca81e6b9615ed3a01df200b8..e038c94e1c45596edb8d41cfe067a3a9222d72b2 100644 (file)
@@ -39,3 +39,20 @@ network_get_ipaddr6() { __network_ipaddr "$1" "$2" 6 0; }
 
 network_get_subnet()  { __network_ipaddr "$1" "$2" 4 1; }
 network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; }
+
+
+__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" "$__field"
+}
+
+network_get_device()  { __network_device "$1" "$2" l3_device; }
+network_get_physdev() { __network_device "$1" "$2" device;    }