diff options
author | Paul Fertser <fercerpav@gmail.com> | 2021-09-23 10:28:45 +0300 |
---|---|---|
committer | Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> | 2021-11-09 16:45:38 +0000 |
commit | 8a6b1a8d29cbd62f005ba20998ca9c8048ff49fc (patch) | |
tree | 60d1fc5e1f0906b94c259d02b68a1f7977fa8e38 | |
parent | a667f6b8dd4b0f47d9c0aacb900f1fd3045ec945 (diff) | |
download | upstream-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.init | 11 |
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 } |