diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh
index 1b42133ba2379b5eca81e6b9615ed3a01df200b8..159da09a0d61617682663bd2718a52f46df826f2 100644
--- a/package/base-files/files/lib/functions/network.sh
+++ b/package/base-files/files/lib/functions/network.sh
@@ -39,3 +39,18 @@ 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_get_device()
+{
+	local __var="$1"
+	local __iface="$2"
+
+	local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)"
+	[ -n "$__tmp" ] || return 1
+
+	json_load "$__tmp"
+	json_get_var "$__var" device
+
+	return 0
+}