aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2021-09-23 10:28:45 +0300
committerKevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>2021-11-09 16:45:38 +0000
commit8a6b1a8d29cbd62f005ba20998ca9c8048ff49fc (patch)
tree60d1fc5e1f0906b94c259d02b68a1f7977fa8e38
parenta667f6b8dd4b0f47d9c0aacb900f1fd3045ec945 (diff)
downloadupstream-8a6b1a8d29cbd62f005ba20998ca9c8048ff49fc.tar.gz
upstream-8a6b1a8d29cbd62f005ba20998ca9c8048ff49fc.tar.bz2
upstream-8a6b1a8d29cbd62f005ba20998ca9c8048ff49fc.zip
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@gmail.com>
-rwxr-xr-x[-rw-r--r--]package/network/services/dnsmasq/files/dnsmasq.init11
1 files changed, 8 insertions, 3 deletions
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index d32c6cc1a0..1e53f8f2c1 100644..100755
--- 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
}