dnsmasq: add match_tag for --dhcp-host
[openwrt/staging/thess.git] / package / network / services / dnsmasq / files / dnsmasq.init
old mode 100644 (file)
new mode 100755 (executable)
index d32c6cc..1e53f8f
@@ -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
 }