[openwrt/openwrt] dnsmasq: add match_tag for --dhcp-host

LEDE Commits lede-commits at lists.infradead.org
Tue Nov 9 08:53:14 PST 2021


ldir pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/8a6b1a8d29cbd62f005ba20998ca9c8048ff49fc

commit 8a6b1a8d29cbd62f005ba20998ca9c8048ff49fc
Author: Paul Fertser <fercerpav at gmail.com>
AuthorDate: Thu Sep 23 10:28:45 2021 +0300

    dnsmasq: add match_tag for --dhcp-host
    
    A set of tags can be specified for --dhcp-host option to restrict the
    assignment to the requests which match all the tags.
    
    Example usage:
    
    config vendorclass
            option networkid 'udhcp'
            option vendorclass 'udhcp'
    
    config host
            option mac '*:*:*:*:*:*'
            list match_tag 'switch.10'
            list match_tag 'udhcp'
            option ip '192.168.25.10'
    
    Signed-off-by: Paul Fertser <fercerpav at gmail.com>
---
 package/network/services/dnsmasq/files/dnsmasq.init | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
old mode 100644
new mode 100755
index d32c6cc1a0..1e53f8f2c1
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -332,7 +332,7 @@ dhcp_match_add() {
 
 dhcp_host_add() {
 	local cfg="$1"
-	local hosttag nametime addrs duids macs tags
+	local hosttag nametime addrs duids macs tags mtags
 
 	config_get_bool force "$cfg" force 0
 
@@ -357,6 +357,11 @@ dhcp_host_add() {
 	config_get duid "$cfg" duid
 	config_get tag "$cfg" tag
 
+	add_tag() {
+		mtags="${mtags}tag:$1,"
+	}
+	config_list_foreach "$cfg" match_tag add_tag
+
 	if [ -n "$mac" ]; then
 		# --dhcp-host=00:20:e0:3b:13:af,192.168.0.199,lap
 		# many MAC are possible to track a laptop ON/OFF dock
@@ -394,9 +399,9 @@ dhcp_host_add() {
 
 	if [ $DNSMASQ_DHCP_VER -eq 6 ]; then
 		addrs="${ip:+,$ip}${hostid:+,[::$hostid]}"
-		xappend "--dhcp-host=$macs${duids:+,$duids}$hosttag$addrs$nametime"
+		xappend "--dhcp-host=$mtags$macs${duids:+,$duids}$hosttag$addrs$nametime"
 	else
-		xappend "--dhcp-host=$macs$hosttag${ip:+,$ip}$nametime"
+		xappend "--dhcp-host=$mtags$macs$hosttag${ip:+,$ip}$nametime"
 	fi
 }
 



More information about the lede-commits mailing list