]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
dnsmasq: fix start if dhcp-range is not correct
authorFlorian Eckert <fe@dev.tdt.de>
Tue, 29 Apr 2025 13:26:36 +0000 (15:26 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Thu, 29 May 2025 21:54:18 +0000 (23:54 +0200)
If the uci 'dhcp' configuration for the dhcp leases is incorrect then
the call to 'ipclac' fails. However, the problem is that the dnsmasq
configuration option 'dhcp-range' is still written for this uci section
even though the information generated by ipcalc is incorrect or not set.

Due to the incorrectly generated configuration for dnsmasq, the service
cannot start.

To prevent an incorrect configuration from being written to the configuration,
a check is now made beforehand to ensure that the required variables are
present and valid. If the configuration is incorrect, a message is emitted
to the log that this configuration section is incorrect and this uci
configuration section is omitted.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Link: https://github.com/openwrt/openwrt/pull/18641
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
package/network/services/dnsmasq/Makefile
package/network/services/dnsmasq/files/dnsmasq.init

index 5290f1e4681663b7611193cab87916bb2cab1025..6b9853e5ff8efc5535a6a2d8a5c46187202a1160 100644 (file)
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=dnsmasq
 PKG_UPSTREAM_VERSION:=2.91
 PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
 PKG_SOURCE_URL:=https://thekelleys.org.uk/dnsmasq/
index 8258bcc3f4f8168463de1301f69663255844e003..a0a644fcbd8d33ee4940689705aca6521c20cc14 100755 (executable)
@@ -597,10 +597,20 @@ dhcp_add() {
        nettag="${networkid:+set:${networkid},}"
 
        # make sure the DHCP range is not empty
-       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}"
+       if [ "$dhcpv4" != "disabled" ]; then
+               unset START
+               unset END
+               unset NETMASK
+               ipcalc "$ipaddr/$prefix_or_netmask" "$start" "$limit"
+
+               if [ -z "$START" ] || [ -z "$END" ] || [ -z "$NETMASK" ]; then
+                       logger -t dnsmasq \
+                               "unable to set dhcp-range for dhcp uci config section '$cfg'" \
+                               "on interface '$ifname', please check your config"
+               else
+                       [ "$dynamicdhcpv4" = "0" ] && END="static"
+                       xappend "--dhcp-range=$tags$nettag$START,$END,$NETMASK,$leasetime${options:+ $options}"
+               fi
        fi
 
        if [ "$dynamicdhcpv6" = "0" ] ; then