Skip to content

Commit

Permalink
dnsmasq: add match_tag for --dhcp-host
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
paulfertser authored and ldir-EDB0 committed Nov 9, 2021
1 parent a667f6b commit 8a6b1a8
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions package/network/services/dnsmasq/files/dnsmasq.init 100644 → 100755
Expand Up @@ -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

Expand All @@ -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
Expand Down Expand Up @@ -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
}

Expand Down

0 comments on commit 8a6b1a8

Please sign in to comment.