From: Paul Donald Date: Sat, 6 Apr 2024 17:44:19 +0000 (+0200) Subject: dnsmasq: add 'extraconftext' parameter X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=bd81d97e19e6cc6e33dc5ff852ece95bbc6be01e;p=openwrt%2Fstaging%2Fpepe2k.git dnsmasq: add 'extraconftext' parameter 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'). Usage: config dnsmasq 'config' ... option extraconftext 'cache-size=2048\nlog-async=20' config dnsmasq 'blah' ... option extraconftext 'cache-size=128\nlog-async=5' or even (which would produce staggered output but still valid) config dnsmasq 'blah' ... option extraconftext 'cache-size=128 log-async=5' 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 Tested-by: Vladimir Kochkovski Link: https://github.com/openwrt/openwrt/pull/14975 Signed-off-by: Hauke Mehrtens --- diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init index 7ef4df3ba6..dee921258f 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" @@ -1121,14 +1122,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 + [ -n "$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