dnsmasq: introduce config support for forced DHCP options
authorJo-Philipp Wich <jo@mein.io>
Wed, 21 Jun 2017 14:48:41 +0000 (16:48 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 21 Jul 2017 06:09:45 +0000 (08:09 +0200)
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>
package/network/services/dnsmasq/files/dnsmasq.init

index 6f985b2417c10c311e232e63bdc4dfc5766d5b98..4f539f9ba7ea6ec0e2eb549b1ad7beb49c4f1bcf 100644 (file)
@@ -575,7 +575,8 @@ dhcp_add() {
                dhcp_option_append "option6:dns-server,$dnss" "$networkid"
        fi
 
                dhcp_option_append "option6:dns-server,$dnss" "$networkid"
        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 networkid="$2"
        local force="$3"
        local cfg="$1"
        local networkid="$2"
        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
                for option in $dhcp_option; do
 
                local option
                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"