X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=package%2Fnetwork%2Fservices%2Fdnsmasq%2Ffiles%2Fdnsmasq.init;h=2c71a777c33bec788650a666a1da2fb2b6fa1cfb;hp=2fd56ed4abe6eb13bb3229cf1794f09e181d6880;hb=bcf20e05832aa8b00ab4b5e67a112d7910cca2d0;hpb=fcfd5cdb59d25d4bd1ec410f32b452c139f5e288 diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init index 2fd56ed4ab..2c71a777c3 100644 --- a/package/network/services/dnsmasq/files/dnsmasq.init +++ b/package/network/services/dnsmasq/files/dnsmasq.init @@ -13,7 +13,6 @@ ADD_LOCAL_FQDN="" BASECONFIGFILE="/var/etc/dnsmasq.conf" BASEHOSTFILE="/tmp/hosts/dhcp" -BASETIMESTAMPFILE="/etc/dnsmasq.time" TRUSTANCHORSFILE="/usr/share/dnsmasq/trust-anchors.conf" TIMEVALIDFILE="/var/state/dnsmasqsec" BASEDHCPSTAMPFILE="/var/run/dnsmasq" @@ -295,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 @@ -636,7 +635,7 @@ dhcp_domain_add() { record="${record:+$record }$name" done - echo "$ip $record" >> $HOSTFILE + echo "$ip $record" >> $HOSTFILE_TMP } dhcp_srv_add() { @@ -742,7 +741,7 @@ dnsmasq_start() CONFIGFILE="${BASECONFIGFILE}.${cfg}" CONFIGFILE_TMP="${CONFIGFILE}.$$" HOSTFILE="${BASEHOSTFILE}.${cfg}" - TIMESTAMPFILE="${BASETIMESTAMPFILE}.${cfg}" + HOSTFILE_TMP="${HOSTFILE}.$$" BASEDHCPSTAMPFILE_CFG="${BASEDHCPSTAMPFILE}.${cfg}" # before we can call xappend @@ -752,10 +751,8 @@ dnsmasq_start() mkdir -p /var/lib/misc chown dnsmasq:dnsmasq /var/run/dnsmasq - [ -f "$TIMESTAMPFILE" ] && rm -f "$TIMESTAMPFILE" - 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 @@ -1002,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 @@ -1029,7 +1027,7 @@ dnsmasq_start() dnsmasq_stop() { - local cfg="$1" + local cfg="$1" resolvfile config_get resolvfile "$cfg" "resolvfile" @@ -1044,10 +1042,22 @@ dnsmasq_stop() rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp } +add_interface_trigger() +{ + local interface ignore + + config_get interface "$1" interface + config_get_bool ignore "$1" ignore 0 + + [ -n "$interface" -a $ignore -eq 0 ] && procd_add_interface_trigger "interface.*" "$interface" /etc/init.d/dnsmasq reload +} + service_triggers() { - procd_add_reload_trigger "dhcp" - procd_add_raw_trigger "interface.*" 2000 /etc/init.d/dnsmasq reload + procd_add_reload_trigger "dhcp" "system" + + config_load dhcp + config_foreach add_interface_trigger dhcp } boot() @@ -1086,7 +1096,7 @@ start_service() { reload_service() { rc_procd start_service "$@" - return 0 + procd_send_signal dnsmasq "$@" } stop_service() {