dnsmasq: add support for set: and tag: pairs
[openwrt/openwrt.git] / package / dnsmasq / files / dnsmasq.init
index 33fc177d0673320f055ff025e59e6cf79bb3aa6a..f3d438e209dd39b31dbe491b404ee34d5da30567 100644 (file)
@@ -224,14 +224,32 @@ dhcp_host_add() {
 
        config_get name "$cfg" name
        config_get ip "$cfg" ip
-       [ -n "$ip" ] || [ -n "$name" ] || return 0
+       [ -n "$ip" -o -n "$name" ] || return 0
 
        macs=""
        config_get mac "$cfg" mac
        for m in $mac; do append macs "$m" ","; done
        [ -n "$macs" ] || return 0
 
-       xappend "--dhcp-host=$macs${networkid:+,net:$networkid}${ip:+,$ip}${name:+,$name}"
+       config_get tag "$cfg" tag
+
+       xappend "--dhcp-host=$macs${networkid:+,net:$networkid}${tag:+,set:$tag}${ip:+,$ip}${name:+,$name}"
+}
+
+dhcp_tag_add() {
+       local cfg="$1"
+
+       tag="$cfg"
+
+       [ -n "$tag" ] || return 0
+
+       config_get_bool force "$cfg" force 0
+       [ "$force" = "0" ] && force=
+
+       config_get option "$cfg" dhcp_option
+       for o in $option; do
+               xappend "--dhcp-option${force:+-force}=tag:$tag,$o"
+       done
 }
 
 dhcp_mac_add() {
@@ -435,6 +453,7 @@ start() {
        echo >> $CONFIGFILE
        config_foreach dhcp_boot_add boot
        config_foreach dhcp_mac_add mac
+       config_foreach dhcp_tag_add tag
        config_foreach dhcp_vendorclass_add vendorclass
        config_foreach dhcp_userclass_add userclass
        config_foreach dhcp_circuitid_add circuitid