From 1a520f8012df27cdd0e456e307465ae216864d1a Mon Sep 17 00:00:00 2001 From: Alex Oprea Date: Wed, 18 Jan 2017 14:41:27 +0100 Subject: [PATCH] multiwan: use dns entries from alias interfaces refs #11167 --- multiwan/files/usr/bin/multiwan | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/multiwan/files/usr/bin/multiwan b/multiwan/files/usr/bin/multiwan index 4e7abcc06..e3e4b4827 100755 --- a/multiwan/files/usr/bin/multiwan +++ b/multiwan/files/usr/bin/multiwan @@ -436,6 +436,34 @@ mwanrule() { add_rule } + +get_dns_servers() { + local group=$1 + local groups=$1 + local dns="" + local dnss="" + local aliases="" + local g + + aliases="$(uci show network| grep =\'@$group\')" + + for g in $aliases ; do + g=${g#*.}; g=${g%%.*} + [ "$(uci -q get network.$g)" == "interface" ] || continue + groups="$groups $g" + done + + groups="$(echo $groups | tr ' ' '\n' | sort -u | tr '\n' ' ')" + + for group in $groups ; do + network_get_dnsserver dns ${group} + dnss="$dnss $dns" + done + + echo $dnss +} + + refresh_dns() { local dns local group @@ -464,7 +492,7 @@ refresh_dns() { failchk=$(query_config failchk $group) dns=$(uci_get_state multiwan ${group} dns 'auto') - [ "$dns" == "auto" ] && network_get_dnsserver dns ${group} + [ "$dns" == "auto" ] && dns=$(get_dns_servers $group) dns=$(echo $dns | sed -e "s/ /\n/g") if [ ! -z "$dns" -a "$failchk" != "x" -a "$ipaddr" != "x" -a "$gateway" != "x" -a "$ifname" != "x" ]; then