base-files: add add_dns() and remove_dns() helpers to network config, useful to merge...
authorJo-Philipp Wich <jow@openwrt.org>
Fri, 7 May 2010 01:17:47 +0000 (01:17 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Fri, 7 May 2010 01:17:47 +0000 (01:17 +0000)
SVN-Revision: 21391

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

index 4336244f6e8cb5530a9020deb0922e6277bfeb96..1a77145f5a132853a1b13e62972861c99975cce0 100755 (executable)
@@ -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="$*"