dnsmasq: prefer localuse over resolvfile guesswork
[openwrt/staging/wigyori.git] / package / network / services / dnsmasq / files / dnsmasq.init
index 9c922eec6cf9f76c22d91d00d68671903f4edd5b..4ae71e438bec8faa428edaa6af625f1ebf0c3f50 100644 (file)
@@ -731,7 +731,9 @@ dhcp_relay_add() {
 
 dnsmasq_start()
 {
-       local cfg="$1" disabled resolvfile user_dhcpscript
+       local cfg="$1"
+       local disabled user_dhcpscript
+       local resolvfile localuse=0
 
        config_get_bool disabled "$cfg" disabled 0
        [ "$disabled" -gt 0 ] && return 0
@@ -828,6 +830,7 @@ dnsmasq_start()
        append_bool "$cfg" sequential_ip "--dhcp-sequential-ip"
        append_bool "$cfg" allservers "--all-servers"
        append_bool "$cfg" noping "--no-ping"
+       append_bool "$cfg" rapidcommit "--dhcp-rapid-commit"
 
        append_parm "$cfg" logfacility "--log-facility"
 
@@ -882,12 +885,12 @@ dnsmasq_start()
 
        config_get_bool noresolv "$cfg" noresolv 0
        if [ "$noresolv" != "1" ]; then
-               config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
-               # So jail doesn't complain if file missing
-               [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
+               config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
+               [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
+               xappend "--resolv-file=$resolvfile"
+               [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
        fi
-
-       [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
+       config_get_bool localuse "$cfg" localuse "$localuse"
 
        config_get hostsfile "$cfg" dhcphostsfile
        [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
@@ -1010,7 +1013,7 @@ dnsmasq_start()
        mv -f $CONFIGFILE_TMP $CONFIGFILE
        mv -f $HOSTFILE_TMP $HOSTFILE
 
-       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
+       [ "$localuse" -gt 0 ] && {
                rm -f /tmp/resolv.conf
                [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
                        echo "search $DOMAIN" >> /tmp/resolv.conf
@@ -1036,17 +1039,15 @@ dnsmasq_start()
 
 dnsmasq_stop()
 {
-       local cfg="$1" resolvfile
+       local cfg="$1"
+       local noresolv resolvfile localuse=0
 
+       config_get_bool noresolv "$cfg" noresolv 0
        config_get resolvfile "$cfg" "resolvfile"
 
-       #relink /tmp/resolve.conf only for main instance
-       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
-               [ -f /tmp/resolv.conf ] && {
-                       rm -f /tmp/resolv.conf
-                       ln -s "$resolvfile" /tmp/resolv.conf
-               }
-       }
+       [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
+       config_get_bool localuse "$cfg" localuse "$localuse"
+       [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
 
        rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
 }