Add new UCI list 'hostsdir' allowing the usage of the dnsmasq --hostdir
argument while also making sure the path is added to the RO jail for the
dnsmasq process. This is useful e.g. in case of manually maintaining a
set of host-like files that should be monitored for changes that should
be applied immediately. This differers from the --addn-hosts host-like
files which only takes effect after sending a SIGHUP to the dnsmasq
process.

It is important to make sure the directory exists before starting the
dnsmasq process, as any non-existing directory is ignored and won't be
monitored, and a common use-case is to maintain a host-like structure
under /tmp.

Signed-off-by: Niklas Söderlund <niklas.soderl...@ragnatech.se>
---
 package/network/services/dnsmasq/files/dnsmasq.init | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/package/network/services/dnsmasq/files/dnsmasq.init 
b/package/network/services/dnsmasq/files/dnsmasq.init
index fb061dceed6c..d80578384a57 100755
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -213,6 +213,12 @@ append_addnhosts() {
        xappend "--addn-hosts=$1"
 }
 
+append_hostsdir() {
+       mkdir -p "$1"
+       append_extramount "$1"
+       xappend "--hostsdir=$1"
+}
+
 append_bogusnxdomain() {
        xappend "--bogus-nxdomain=$1"
 }
@@ -1011,6 +1017,7 @@ dnsmasq_start()
                append_addnhosts "$HOSTFILE_DIR"
        fi
        config_list_foreach "$cfg" "addnhosts" append_addnhosts
+       config_list_foreach "$cfg" "hostsdir" append_hostsdir
        config_list_foreach "$cfg" "bogusnxdomain" append_bogusnxdomain
        append_parm "$cfg" "leasefile" "--dhcp-leasefile" "/tmp/dhcp.leases"
 
-- 
2.46.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to