dnsmasq: rewrite config on host name modification
[openwrt/openwrt.git] / package / network / services / dnsmasq / files / dnsmasq.init
index 8c40f3b59adb06764c8a500955d916b4e79e1288..204e27d9cffd784bb283d51bdc0ab33a787684b1 100644 (file)
@@ -294,7 +294,7 @@ dhcp_host_add() {
 
        config_get_bool dns "$cfg" dns 0
        [ "$dns" = "1" -a -n "$ip" -a -n "$name" ] && {
-               echo "$ip $name${DOMAIN:+.$DOMAIN}" >> $HOSTFILE
+               echo "$ip $name${DOMAIN:+.$DOMAIN}" >> $HOSTFILE_TMP
        }
 
        config_get mac "$cfg" mac
@@ -635,7 +635,7 @@ dhcp_domain_add() {
                record="${record:+$record }$name"
        done
 
-       echo "$ip $record" >> $HOSTFILE
+       echo "$ip $record" >> $HOSTFILE_TMP
 }
 
 dhcp_srv_add() {
@@ -741,6 +741,7 @@ dnsmasq_start()
        CONFIGFILE="${BASECONFIGFILE}.${cfg}"
        CONFIGFILE_TMP="${CONFIGFILE}.$$"
        HOSTFILE="${BASEHOSTFILE}.${cfg}"
+       HOSTFILE_TMP="${HOSTFILE}.$$"
        BASEDHCPSTAMPFILE_CFG="${BASEDHCPSTAMPFILE}.${cfg}"
 
        # before we can call xappend
@@ -751,7 +752,7 @@ dnsmasq_start()
        chown dnsmasq:dnsmasq /var/run/dnsmasq
 
        echo "# auto-generated config file from /etc/config/dhcp" > $CONFIGFILE_TMP
-       echo "# auto-generated config file from /etc/config/dhcp" > $HOSTFILE
+       echo "# auto-generated config file from /etc/config/dhcp" > $HOSTFILE_TMP
 
        local dnsmasqconffile="/etc/dnsmasq.${cfg}.conf"
        if [ ! -r "$dnsmasqconffile" ]; then
@@ -998,6 +999,7 @@ dnsmasq_start()
 
        echo >> $CONFIGFILE_TMP
        mv -f $CONFIGFILE_TMP $CONFIGFILE
+       mv -f $HOSTFILE_TMP $HOSTFILE
 
        [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
                rm -f /tmp/resolv.conf
@@ -1042,7 +1044,7 @@ dnsmasq_stop()
 
 service_triggers()
 {
-       procd_add_reload_trigger "dhcp"
+       procd_add_reload_trigger "dhcp" "system"
        procd_add_raw_trigger "interface.*" 2000 /etc/init.d/dnsmasq reload
 }