From f6113588706628f09282a00205f901baf0c72a20 Mon Sep 17 00:00:00 2001
From: Jo-Philipp Wich <jow@openwrt.org>
Date: Thu, 3 Dec 2015 22:27:06 +0000
Subject: base-files: board.d: support specifiying the protocol of lan and wan

Some boards, e.g. the Sheeva Plug, require the lan interface to be set
to DHCP instead of a static address, therfore support that.

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 47732
---
 .../files/lib/functions/uci-defaults-new.sh        | 36 ++++++++++++++++------
 1 file changed, 26 insertions(+), 10 deletions(-)

(limited to 'package/base-files/files/lib')

diff --git a/package/base-files/files/lib/functions/uci-defaults-new.sh b/package/base-files/files/lib/functions/uci-defaults-new.sh
index 9fa3fa2..b350549 100755
--- a/package/base-files/files/lib/functions/uci-defaults-new.sh
+++ b/package/base-files/files/lib/functions/uci-defaults-new.sh
@@ -32,9 +32,26 @@ json_select_object() {
 _ucidef_set_interface() {
 	local name="$1"
 	local iface="$2"
+	local proto="$3"
 
 	json_select_object "$name"
 	json_add_string ifname "$iface"
+
+	if ! json_is_a protocol string; then
+		case "$proto" in
+			static|dhcp|none) : ;;
+			*)
+				case "$name" in
+					lan) proto="static" ;;
+					wan) proto="dhcp" ;;
+					*) proto="none" ;;
+				esac
+			;;
+		esac
+
+		json_add_string protocol "$proto"
+	fi
+
 	json_select ..
 }
 
@@ -57,19 +74,15 @@ ucidef_set_interface_loopback()
 }
 
 ucidef_set_interface_lan() {
-	local lan_if="$1"
-
 	json_select_object network
-	_ucidef_set_interface lan "$lan_if"
+	_ucidef_set_interface lan "$@"
 	json_select ..
 }
 
 ucidef_set_interface_wan() {
-        local wan_if="$1"
-
-        json_select_object network
-        _ucidef_set_interface wan "$wan_if"
-        json_select ..
+	json_select_object network
+	_ucidef_set_interface wan "$@"
+	json_select ..
 }
 
 ucidef_set_interfaces_lan_wan() {
@@ -164,14 +177,17 @@ _ucidef_finish_switch_roles() {
 		json_select ..
 
 		json_select_object network
+			local devices
+
 			json_select_object "$role"
 				# attach previous interfaces (for multi-switch devices)
-				local devices; json_get_var devices ifname
+				json_get_var devices ifname
 				if ! list_contains devices "$device"; then
 					devices="${devices:+$devices }$device"
 				fi
-				json_add_string ifname "$devices"
 			json_select ..
+
+			_ucidef_set_interface "$role" "$devices"
 		json_select ..
 	done
 }
-- 
cgit v1.1