dnsmasq: refuse to add empty DHCP range
[openwrt/staging/dedeckeh.git] / package / network / services / dnsmasq / files / dnsmasq.init
index d3928c23993a890f0744a4b6ce5d59717b3072b7..21e330ec28c1a00d5b5a2c9cfd81bbfa812f321f 100755 (executable)
@@ -584,21 +584,20 @@ dhcp_add() {
                limit=$((limit-1))
        fi
 
-       eval "$(ipcalc.sh "${subnet%%/*}" $netmask $start $limit)"
+       # make sure the DHCP range is not empty
+       if [ "$dhcpv4" != "disabled" ] && eval "$(ipcalc.sh "${subnet%%/*}" "$netmask" "$start" "$limit")" ; then
+               [ "$dynamicdhcp" = "0" ] && END="static"
+
+               xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}"
+       fi
 
        if [ "$dynamicdhcp" = "0" ] ; then
-               END="static"
                dhcp6range="::,static"
        else
                dhcp6range="::1000,::ffff"
        fi
 
 
-       if [ "$dhcpv4" != "disabled" ] ; then
-               xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}"
-       fi
-
-
        if [ $DNSMASQ_DHCP_VER -eq 6 ] && [ "$ra" = "server" ] ; then
                # Note: dnsmasq cannot just be a DHCPv6 server (all-in-1)
                # and let some other machine(s) send RA pointing to it.