#!/bin/sh
for octet in 1 2 3 4; do
 eval lan_netaddr$octet=$(( $(nvram get lan_ipaddr | cut -d . -f $octet) & \
  $(nvram get lan_netmask | cut -d . -f $octet) ))
done
lan_netaddr=$lan_netaddr1.$lan_netaddr_2.$lan_netaddr3.$lan_netaddr4
dhcp_start=$(( $(nvram get lan_ipaddr | cut -d . -f 4) + 99 ))
if [ $dhcp_start -gt 253 ]; then eval dhcp_start=$(( dhcp_start - 98 )); fi
dhcp_end=$(( $dhcp_start + 150 ))
if [ $dhcp_end -gt 254 ]; then eval dhcp_end=254; fi
dhcp_base=$lan_netaddr1.$lan_netaddr2.$lan_netaddr3
dhcp_netmask=$(nvram get lan_netmask)
template=$(cat /etc/dnsmasq.conf.template)
if [ $dhcp_end -ge $dhcp_start ]; then  # don't overwrite if invalid settings
 eval dhcp_start=$dhcp_base.$dhcp_start
 eval dhcp_end=$dhcp_base.$dhcp_end
 eval "echo \"$template\"" > /etc/dnsmasq.conf
fi
if [ "$(pidof dnsmasq)" ]; then killall dnsmasq; fi
if [ "$(pidof dnsmasq)" ]; then killall -KILL dnsmasq; fi
/usr/sbin/dnsmasq
