[source] dnsmasq: support dhcp_option config as a list

LEDE Commits lede-commits at lists.infradead.org
Thu Apr 27 13:04:49 PDT 2017


dedeckeh pushed a commit to source.git, branch master:
https://git.lede-project.org/9412fc294995ae2543fabf84d2ce39a80bfb3bd6

commit 9412fc294995ae2543fabf84d2ce39a80bfb3bd6
Author: Hans Dedecker <dedeckeh at gmail.com>
AuthorDate: Wed Apr 26 22:37:27 2017 +0200

    dnsmasq: support dhcp_option config as a list
    
    Configuring dhcp_option as an option does not allow the usage of white
    spaces in the option value; fix this by supporting dhcp_option as a list
    config while still supporting the option config to maintain backwards
    compatibility
    
    Signed-off-by: Jo-Philipp Wich <jo at mein.io>
    Signed-off-by: Hans Dedecker <dedeckeh at gmail.com>
---
 .../network/services/dnsmasq/files/dnsmasq.init    | 25 ++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index 448d3ee..4291df2 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() {



More information about the lede-commits mailing list