From 7e664b7c2dc00006ba29bf947cf177b5bccdc47d Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Fri, 25 May 2018 07:28:28 +0200 Subject: [PATCH] base-files: fix ucidef_set_interface() protocol selection The previous refactoring of ucidef_set_interface() removed the protocol selection heuristic which breaks the networking defaults for the majority of boards. Re-add the protocol selection and rename two bad "proto" references to the expected "protocol" value. Fixes: 85048a9c1f ("base-files: rework _ucidef_set_interface to be more generic") Signed-off-by: Jo-Philipp Wich --- .../files/lib/functions/uci-defaults.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh index 8065af24a5..7fa328ac20 100755 --- a/package/base-files/files/lib/functions/uci-defaults.sh +++ b/package/base-files/files/lib/functions/uci-defaults.sh @@ -28,24 +28,30 @@ json_select_object() { } ucidef_set_interface() { - local network=$1 + local network=$1; shift [ -z "$network" ] && return json_select_object network json_select_object "$network" - shift while [ -n "$1" ]; do - local opt="$1" - local val="$2" - shift; shift; + local opt=$1; shift + local val=$1; shift [ -n "$opt" -a -n "$val" ] || break json_add_string "$opt" "$val" done + if ! json_is_a protocol string; then + case "$network" in + lan) json_add_string protocol static ;; + wan) json_add_string protocol dhcp ;; + *) json_add_string protocol none ;; + esac + fi + json_select .. json_select .. }