From: Jonas Gorski <jonas.gorski@gmail.com>
Date: Thu, 28 Jul 2016 20:58:59 +0000 (+0200)
Subject: base-files: add preinit ifname detection based on board.json
X-Git-Tag: v17.01.0-rc1~1739
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c18edcec4500008a1dabf0b017322eb23b059c58;p=oweals%2Fopenwrt.git

base-files: add preinit ifname detection based on board.json

Make use of the existing board.d to autodetect lan ifname in a generic way.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
---

diff --git a/package/base-files/files/lib/preinit/10_indicate_preinit b/package/base-files/files/lib/preinit/10_indicate_preinit
index b9368d90a9..206243390e 100644
--- a/package/base-files/files/lib/preinit/10_indicate_preinit
+++ b/package/base-files/files/lib/preinit/10_indicate_preinit
@@ -9,6 +9,33 @@ preinit_ip_config() {
 	ip -4 address add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $1
 }
 
+preinit_config_board() {
+	/bin/board_detect /tmp/board.json
+
+	[ -f "/tmp/board.json" ] || return
+
+	. /usr/share/libubox/jshn.sh
+
+	json_init
+	json_load "$(cat /tmp/board.json)"
+
+	json_select network
+		json_select "lan"
+			json_get_vars ifname
+		json_select ..
+	json_select ..
+
+	[ -n "$ifname" ] || return
+
+	# only use the first one
+	ifname=${ifname%% *}
+
+	# trim any vlan ids
+	ifname=${ifname%\.*}
+
+	preinit_ip_config $ifname
+}
+
 preinit_ip() {
 	# if the preinit interface isn't specified and ifname is set in
 	# preinit.arch use that interface
@@ -18,6 +45,8 @@ preinit_ip() {
 
 	if [ -n "$pi_ifname" ]; then
 		preinit_ip_config $pi_ifname
+	elif [ -d "/etc/board.d/" ]; then
+		preinit_config_board
 	fi
 }