dnsmasq: add support for set: and tag: pairs
On my network, I have a variety of machines and appliances, some of which need different configuration issues than the default options. For example: config host option name 'client' option mac '00:01:02:03:04:05' option ip '192.168.1.20' option tag 'acme' config tag acme option force '1' list dhcp_option 'option:router,192.168.1.253' list dhcp_option 'option:domain-name,acme.com' list dhcp_option 'option:domain-search,acme.com,redfish-solutions.com' which allows me to override the default router for my client's host, as well as its domain-name, and its domain-search. this causes the following config lines: dhcp-host=00:01:02:03:04:05,set:acme,192.168.1.20,client dhcp-option-force=tag:acme,option:router,192.168.1.253 dhcp-option-force=tag:acme,option:domain-name,acme.com dhcp-option-force=tag:acme,option:domain-search:acme.com,redfish-solutions.com This could be useful elsewhere, for instance, if you have an IP CCTV that you don't want to have a default-route, etc. Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31815 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
474b508fd6
commit
1d7469404c
|
@ -224,14 +224,32 @@ dhcp_host_add() {
|
||||||
|
|
||||||
config_get name "$cfg" name
|
config_get name "$cfg" name
|
||||||
config_get ip "$cfg" ip
|
config_get ip "$cfg" ip
|
||||||
[ -n "$ip" ] || [ -n "$name" ] || return 0
|
[ -n "$ip" -o -n "$name" ] || return 0
|
||||||
|
|
||||||
macs=""
|
macs=""
|
||||||
config_get mac "$cfg" mac
|
config_get mac "$cfg" mac
|
||||||
for m in $mac; do append macs "$m" ","; done
|
for m in $mac; do append macs "$m" ","; done
|
||||||
[ -n "$macs" ] || return 0
|
[ -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() {
|
dhcp_mac_add() {
|
||||||
|
@ -435,6 +453,7 @@ start() {
|
||||||
echo >> $CONFIGFILE
|
echo >> $CONFIGFILE
|
||||||
config_foreach dhcp_boot_add boot
|
config_foreach dhcp_boot_add boot
|
||||||
config_foreach dhcp_mac_add mac
|
config_foreach dhcp_mac_add mac
|
||||||
|
config_foreach dhcp_tag_add tag
|
||||||
config_foreach dhcp_vendorclass_add vendorclass
|
config_foreach dhcp_vendorclass_add vendorclass
|
||||||
config_foreach dhcp_userclass_add userclass
|
config_foreach dhcp_userclass_add userclass
|
||||||
config_foreach dhcp_circuitid_add circuitid
|
config_foreach dhcp_circuitid_add circuitid
|
||||||
|
|
Loading…
Reference in New Issue