[source] dnsmasq: support dhcp_option config as a list

LEDE Commits lede-commits at lists.infradead.org
Tue May 9 13:40:16 PDT 2017


dedeckeh pushed a commit to source.git, branch lede-17.01:
https://git.lede-project.org/d8cfebaa5074b66871a345386f7f49bffbad1d15

commit d8cfebaa5074b66871a345386f7f49bffbad1d15
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    | 26 ++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index 46607df..bac5fd7 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -392,6 +392,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() {
 	local cfg="$1"
 	local networkid="$2"
@@ -399,11 +407,21 @@ 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
+		config_get dhcp_option "$cfg" dhcp_option
+
+		[ -n "$dhcp_option" ] && echo "Warning: the 'option dhcp_option' syntax is deprecated, use 'list dhcp_option'" >&2
+
+		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