base-files: implement network_get_dnsserver() and network_get_dnssearch() in /lib...
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 29 Jun 2012 19:04:11 +0000 (19:04 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Fri, 29 Jun 2012 19:04:11 +0000 (19:04 +0000)
SVN-Revision: 32531

package/base-files/files/lib/functions/network.sh

index c6b98e6e1c97076c2400ff25a77d67dfc43648cb..d2d4aae0d977f3dd857c668afda4589f022673d7 100644 (file)
@@ -82,6 +82,37 @@ network_get_gateway()  { __network_gateway "$1" "$2" 4; }
 network_get_gateway6() { __network_gateway "$1" "$2" 6; }
 
 
+__network_dns() {
+       local __var="$1"
+       local __iface="$2"
+       local __field="$3"
+
+       local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)"
+       local __dns=""
+       local __idx=1
+
+       json_load "${__tmp:-{}}"
+
+       if json_get_type __tmp "$__field" && [ "$__tmp" = array ]; then
+
+               json_select "$__field"
+
+               while json_get_type __tmp "$__idx" && [ "$__tmp" = string ]; do
+
+                       json_get_var __tmp "$((__idx++))"
+                       __dns="${__dns:+$__dns }$__tmp"
+
+               done
+       fi
+
+       eval "export -- \"$__var=$__dns\""
+       [ -n "$__dns" ]
+}
+
+network_get_dnsserver() { __network_dns "$1" "$2" dns_server; }
+network_get_dnssearch() { __network_dns "$1" "$2" dns_search; }
+
+
 __network_wan() {
        local __var="$1"
        local __family="$2"