Browse Source

base-files: add add_dns() and remove_dns() helpers to network config, useful to merge dns entries from multiple interfaces

SVN-Revision: 21391
Jo-Philipp Wich 15 years ago
parent
commit
be41fdd01a
1 changed files with 29 additions and 0 deletions
  1. 29 0
      package/base-files/files/lib/network/config.sh

+ 29 - 0
package/base-files/files/lib/network/config.sh

@@ -66,6 +66,35 @@ add_vlan() {
 	return 1
 }
 
+# add dns entries if they are not in resolv.conf yet
+add_dns() {
+	local cfg="$1"; shift
+
+	local dns
+	local add
+	for dns in "$@"; do
+		grep -qsF "nameserver $dns" /tmp/resolv.conf.auto || {
+			add="${add:+$add }$dns"
+			echo "nameserver $dns" >> /tmp/resolv.conf.auto
+		}
+	done
+
+	uci_set_state network "$cfg" dns "$add"
+}
+
+# remove dns entries of the given iface
+remove_dns() {
+	local cfg="$1"
+
+	local dns
+	config_get dns "$cfg" dns
+	for dns in $dns; do
+		sed -i -e "/^nameserver $dns$/d" /tmp/resolv.conf.auto
+	done
+
+	uci_revert_state network "$cfg" dns
+}
+
 # sort the device list, drop duplicates
 sort_list() {
 	local arg="$*"