X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/5e1086da2dea492398407519d31310f5fb61880a..4cc612872a92f33fe0164f0b7762b9f5b2e5c181:/package/dnsmasq/files/dnsmasq.init diff --git a/package/dnsmasq/files/dnsmasq.init b/package/dnsmasq/files/dnsmasq.init index ef1a8e98b..80ab250ba 100644 --- a/package/dnsmasq/files/dnsmasq.init +++ b/package/dnsmasq/files/dnsmasq.init @@ -2,6 +2,9 @@ # Copyright (C) 2007 OpenWrt.org START=60 + +SERVICE_USE_PID=1 + DNS_SERVERS="" DOMAIN="" @@ -78,6 +81,7 @@ dnsmasq() { append_bool "$cfg" enable_tftp "--enable-tftp" append_bool "$cfg" nonwildcard "-z" + append_parm "$cfg" dhcpscript "-6" append_parm "$cfg" cachesize "-c" append_parm "$cfg" dnsforwardmax "-0" append_parm "$cfg" port "-p" @@ -99,10 +103,10 @@ dnsmasq() { config_get DOMAIN "$cfg" domain config_get_bool readethers "$cfg" readethers - [ "$readethers" = "1" ] && [ -e "/etc/ethers" ] || touch /etc/ethers + [ "$readethers" = "1" -a \! -e "/etc/ethers" ] && touch /etc/ethers config_get leasefile $cfg leasefile - [ -n "$leasefile" ] && [ -e "$leasefile" ] || touch "$leasefile" + [ -n "$leasefile" -a \! -e "$leasefile" ] && touch "$leasefile" config_get_bool cachelocal "$cfg" cachelocal 1 config_get hostsfile "$cfg" dhcphostsfile @@ -205,20 +209,19 @@ dhcp_vendorclass_add() { dhcp_host_add() { local cfg="$1" - config_get name "$cfg" name - config_get networkid "$cfg" networkid [ -n "$networkid" ] && dhcp_option_add "$cfg" "$networkid" + config_get name "$cfg" name config_get ip "$cfg" ip - [ -n "$ip" ] || return 0 + [ -n "$ip" ] || [ -n "$name" ] || return 0 macs="" config_get mac "$cfg" mac for m in $mac; do append macs "$m" ","; done [ -n "$macs" ] || return 0 - append args "--dhcp-host=$macs,${networkid:+net:$networkid,}$ip${name:+,$name}" + append args "--dhcp-host=$macs${networkid:+,net:$networkid}${ip:+,$ip}${name:+,$name}" } dhcp_mac_add() { @@ -364,6 +367,19 @@ dhcp_srv_add() { append args "-W $service" } +dhcp_cname_add() { + local cfg="$1" + local cname target + + config_get cname "$cfg" cname + [ -n "$cname" ] || return 0 + + config_get target "$cfg" target + [ -n "$target" ] || return 0 + + append args "--cname=${cname},${target}" +} + start() { include /lib/network scan_interfaces @@ -382,8 +398,9 @@ start() { config_foreach dhcp_domain_add domain config_foreach dhcp_srv_add srvhost config_foreach dhcp_add dhcp + config_foreach dhcp_cname_add cname - /usr/sbin/dnsmasq $args && { + service_start /usr/sbin/dnsmasq $args && { rm -f /tmp/resolv.conf [ -n "$DOMAIN" ] && echo "search $DOMAIN" >> /tmp/resolv.conf DNS_SERVERS="$DNS_SERVERS 127.0.0.1" @@ -394,10 +411,10 @@ start() { } stop() { - [ -f /tmp/resolv.conf ] && { - rm -f /tmp/resolv.conf - ln -s /tmp/resolv.conf.auto /tmp/resolv.conf + service_stop /usr/sbin/dnsmasq && { + [ -f /tmp/resolv.conf ] && { + rm -f /tmp/resolv.conf + ln -s /tmp/resolv.conf.auto /tmp/resolv.conf + } } - killall dnsmasq - return 0 }