X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=package%2Fnetwork%2Fservices%2Fdnsmasq%2Ffiles%2Fdnsmasq.init;h=4291df2544bafe10947bd2155ee9ac7f895a21e6;hp=448d3ee9b0da8753de2b41ebd0c9444b9d666d96;hb=9412fc294995ae2543fabf84d2ce39a80bfb3bd6;hpb=4b4f73937371cc628692c812fdb12eca8a635e5c diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init index 448d3ee9b0..4291df2544 100644 --- a/package/network/services/dnsmasq/files/dnsmasq.init +++ b/package/network/services/dnsmasq/files/dnsmasq.init @@ -538,6 +538,14 @@ dhcp_add() { dhcp_option_add "$cfg" "$networkid" } +dhcp_option_append() { + local option="$1" + local networkid="$2" + local force="$3" + + xappend "--dhcp-option${force:+-force}=${networkid:+$networkid,}$option" +} + dhcp_option_add() { # NOTE: dnsmasq has explicit "option6:" prefix for DHCPv6 so no collisions local cfg="$1" @@ -546,11 +554,20 @@ dhcp_option_add() { [ "$force" = "0" ] && force= - config_get dhcp_option "$cfg" dhcp_option - for o in $dhcp_option; do - xappend "--dhcp-option${force:+-force}=${networkid:+$networkid,}$o" - done + local list_len + config_get list_len "$cfg" dhcp_option_LENGTH + + if [ -n "$list_len" ]; then + config_list_foreach "$cfg" dhcp_option dhcp_option_append "$networkid" "$force" + else + echo "Warning: the 'option dhcp_option' syntax is deprecated, use 'list dhcp_option'" >&2 + config_get dhcp_option "$cfg" dhcp_option + local option + for option in $dhcp_option; do + dhcp_option_append "$option" "$networkid" "$force" + done + fi } dhcp_domain_add() {