[PATCH] dnsmasq: 'ipset' config sections
Aleksandr Mezin
mezin.alexander at gmail.com
Fri Oct 23 01:02:37 EDT 2020
Allow configuring ipsets with dedicated config sections:
config ipset
list name 'ss_rules_dst_forward'
list name 'ss_rules6_dst_forward'
list domain 't.me'
list domain 'telegram.org'
instead of current, rather inconvenient syntax:
config dnsmasq
...
list ipset '/t.me/telegram.org/ss_rules_dst_forward,ss_rules6_dst_forward'
Current syntax will still continue to work though.
With this change, a LuCI GUI for DNS ipsets should be easy to implement.
Signed-off-by: Aleksandr Mezin <mezin.alexander at gmail.com>
---
.../services/dnsmasq/files/dnsmasq.init | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index 0fa3074f92..fff8f8f793 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -769,6 +769,29 @@ dhcp_relay_add() {
fi
}
+dnsmasq_ipset_add() {
+ local cfg="$1"
+ local ipsets domains
+
+ add_ipset() {
+ ipsets="${ipsets:+$ipsets,}$1"
+ }
+
+ add_domain() {
+ # leading '/' is expected
+ domains="$domains/$1"
+ }
+
+ config_list_foreach "$cfg" "name" add_ipset
+ config_list_foreach "$cfg" "domain" add_domain
+
+ if [ -z "$ipsets" ] || [ -z "$domains" ]; then
+ return 0
+ fi
+
+ xappend "--ipset=$domains/$ipsets"
+}
+
dnsmasq_start()
{
local cfg="$1"
@@ -1056,6 +1079,10 @@ dnsmasq_start()
config_foreach filter_dnsmasq cname dhcp_cname_add "$cfg"
echo >> $CONFIGFILE_TMP
+ echo >> $CONFIGFILE_TMP
+ config_foreach filter_dnsmasq ipset dnsmasq_ipset_add "$cfg"
+ echo >> $CONFIGFILE_TMP
+
echo >> $CONFIGFILE_TMP
mv -f $CONFIGFILE_TMP $CONFIGFILE
mv -f $HOSTFILE_TMP $HOSTFILE
--
2.29.0
More information about the openwrt-devel
mailing list