diff mbox series

[3/5] dnsmasq: add 'extraconftext' parameter

Message ID 20240402130919.58881-3-newtwen+github@gmail.com
State New
Headers show
Series [1/5] dnsmasq: add handling of `filter-rr` to init script | expand

Commit Message

Paul Donald April 2, 2024, 1:09 p.m. UTC
Users can now freely add new dnsmasq parameters (i.e. a whole config)
via extraconf. This means users can add their own parameters without
changes to init or GUI.

Co-opted the default of confdir also to include the instance name.
This way each instance gets its own .d directory (and separate instances
do not all inherit the same 'extraconftext').

See https://forum.openwrt.org/t/add-dnsmasq-custom-options-field-in-luci-gui/193184

Tested on: 23.05.3, 22.03.6

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
---
 package/network/services/dnsmasq/files/dnsmasq.init | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index 9bb334f816..9b98bbb015 100755
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -12,6 +12,7 @@  ADD_WAN_FQDN=0
 ADD_LOCAL_FQDN=""
 
 BASECONFIGFILE="/var/etc/dnsmasq.conf"
+EXTRACONFFILE="extraconfig.conf"
 BASEHOSTFILE="/tmp/hosts/dhcp"
 TRUSTANCHORSFILE="/usr/share/dnsmasq/trust-anchors.conf"
 TIMEVALIDFILE="/var/state/dnsmasqsec"
@@ -1118,14 +1119,19 @@  dnsmasq_start()
 	xappend "--dhcp-broadcast=tag:needs-broadcast"
 
 
-	config_get dnsmasqconfdir "$cfg" confdir "/tmp/dnsmasq.d"
+	# Create a dnsmasq.d dir for each instance
+	config_get dnsmasqconfdir "$cfg" confdir "/tmp/dnsmasq${cfg:+.$cfg}.d"
 	xappend "--conf-dir=$dnsmasqconfdir"
 	dnsmasqconfdir="${dnsmasqconfdir%%,*}"
-	[ ! -d "$dnsmasqconfdir" ] && mkdir -p $dnsmasqconfdir
+	[ ! -d "$dnsmasqconfdir" ] && mkdir -p "$dnsmasqconfdir"
 	xappend "--user=dnsmasq"
 	xappend "--group=dnsmasq"
 	echo >> $CONFIGFILE_TMP
 
+	# EXTRACONFFILE allows new dnsmasq parameters before they are natively handled in this init file
+	config_get extraconftext "$cfg" extraconftext
+	echo -e "$extraconftext" > "$dnsmasqconfdir"/"$EXTRACONFFILE"
+
 	config_get_bool enable_tftp "$cfg" enable_tftp 0
 	[ "$enable_tftp" -gt 0 ] && {
 		config_get tftp_root "$cfg" tftp_root