dnsmasq: introduce config support for forced DHCP options

Introduce a new UCI list setting `list dhcp_option_force` which is available
in sections of type `dnsmasq` and `dhcp`.

The `dhcp_option_force` setting has the same semantics as `dhcp_option` but
generates `dhcp-option-force` directives instead of `dhcp-option` ones in
emitted native configuration.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2017-06-21 16:48:41 +02:00
parent 99c4295126
commit d0f6a514b1

View File

@ -575,7 +575,8 @@ dhcp_add() {
dhcp_option_append "option6:dns-server,$dnss" "$networkid" dhcp_option_append "option6:dns-server,$dnss" "$networkid"
fi fi
dhcp_option_add "$cfg" "$networkid" dhcp_option_add "$cfg" "$networkid" 0
dhcp_option_add "$cfg" "$networkid" 2
} }
dhcp_option_append() { dhcp_option_append() {
@ -591,18 +592,20 @@ dhcp_option_add() {
local cfg="$1" local cfg="$1"
local networkid="$2" local networkid="$2"
local force="$3" local force="$3"
local opt="dhcp_option"
[ "$force" = "0" ] && force= [ "$force" = "0" ] && force=
[ "$force" = "2" ] && opt="dhcp_option_force"
local list_len local list_len
config_get list_len "$cfg" dhcp_option_LENGTH config_get list_len "$cfg" "${opt}_LENGTH"
if [ -n "$list_len" ]; then if [ -n "$list_len" ]; then
config_list_foreach "$cfg" dhcp_option dhcp_option_append "$networkid" "$force" config_list_foreach "$cfg" "$opt" dhcp_option_append "$networkid" "$force"
else else
config_get dhcp_option "$cfg" dhcp_option config_get dhcp_option "$cfg" "$opt"
[ -n "$dhcp_option" ] && echo "Warning: the 'option dhcp_option' syntax is deprecated, use 'list dhcp_option'" >&2 [ -n "$dhcp_option" ] && echo "Warning: the 'option $opt' syntax is deprecated, use 'list $opt'" >&2
local option local option
for option in $dhcp_option; do for option in $dhcp_option; do
@ -920,6 +923,7 @@ dnsmasq_start()
} }
dhcp_option_add "$cfg" "" 0 dhcp_option_add "$cfg" "" 0
dhcp_option_add "$cfg" "" 2
xappend "--dhcp-broadcast=tag:needs-broadcast" xappend "--dhcp-broadcast=tag:needs-broadcast"