dnsmasq: Invoke new ipcalc with CIDR notation
authorPhilip Prindeville <philipp@redfish-solutions.com>
Sun, 5 Nov 2023 19:23:29 +0000 (12:23 -0700)
committerKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Wed, 15 Nov 2023 20:36:35 +0000 (20:36 +0000)
The new rewritten ipcalc.sh understands 3 notations:

ipaddr/prefix ...
ipaddr/dotted-netmask ...
ipaddr dotted-netmask ...

meaning that the previous 4th non-standard notation of "ipaddr prefix"
will be dropped, alas that's the notation that dnsmasq currently uses.

This change has us using the first notation which is the most common.

This behavior came in as
https://github.com/openwrt/openwrt/commit/eda27e8382f3e5253defab5419e95d4b51f72de3
a long time ago.

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
package/network/services/dnsmasq/Makefile
package/network/services/dnsmasq/files/dnsmasq.init

index e442d0005b90e99a490dcdeea98358e3ea3b0134..241f3463e2fb1f5def260b59c5933cd445d77551 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=dnsmasq
 PKG_UPSTREAM_VERSION:=2.89
 PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
-PKG_RELEASE:=6
+PKG_RELEASE:=7
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
 PKG_SOURCE_URL:=https://thekelleys.org.uk/dnsmasq/
index d356a21f81f83cd38881057d32e9c66d67cc8bb2..0c769602366c2934a546c6705b7c3b97e511ee78 100755 (executable)
@@ -539,8 +539,13 @@ dhcp_add() {
        # Do not support non-static interfaces for now
        [ static = "$proto" ] || return 0
 
+       ipaddr="${subnet%%/*}"
+       prefix_or_netmask="${subnet##*/}"
+
        # Override interface netmask with dhcp config if applicable
-       config_get netmask "$cfg" netmask "${subnet##*/}"
+       config_get netmask "$cfg" netmask
+
+       [ -n "$netmask" ] && prefix_or_netmask="$netmask"
 
        #check for an already active dhcp server on the interface, unless 'force' is set
        config_get_bool force "$cfg" force 0
@@ -583,7 +588,7 @@ dhcp_add() {
        nettag="${networkid:+set:${networkid},}"
 
        # make sure the DHCP range is not empty
-       if [ "$dhcpv4" != "disabled" ] && ipcalc "${subnet%%/*}" "$netmask" "$start" "$limit" ; then
+       if [ "$dhcpv4" != "disabled" ] && ipcalc "$ipaddr/$prefix_or_netmask" "$start" "$limit" ; then
                [ "$dynamicdhcpv4" = "0" ] && END="static"
 
                xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}"