[openwrt/openwrt] dnsmasq: 'ipset' config sections

LEDE Commits lede-commits at lists.infradead.org
Wed Nov 11 14:47:43 EST 2020


dedeckeh pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/acb336235cc640980ea549655b0702daf9e628f8

commit acb336235cc640980ea549655b0702daf9e628f8
Author: Aleksandr Mezin <mezin.alexander at gmail.com>
AuthorDate: Fri Oct 23 11:02:37 2020 +0600

    dnsmasq: 'ipset' config sections
    
    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>
    Signed-off-by: Hans Dedecker <dedeckeh at gmail.com> [PKG_RELEASE increase]
---
 package/network/services/dnsmasq/Makefile          |  2 +-
 .../network/services/dnsmasq/files/dnsmasq.init    | 27 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index 4086aa25e0..ba10ded333 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=dnsmasq
 PKG_UPSTREAM_VERSION:=2.82
 PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
-PKG_RELEASE:=9
+PKG_RELEASE:=10
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index 7ecc542b44..680e72f9e7 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



More information about the lede-commits mailing list