base-files: add preinit ifname detection based on board.json
authorJonas Gorski <jonas.gorski@gmail.com>
Thu, 28 Jul 2016 20:58:59 +0000 (22:58 +0200)
committerJonas Gorski <jonas.gorski@gmail.com>
Sat, 13 Aug 2016 13:50:00 +0000 (15:50 +0200)
Make use of the existing board.d to autodetect lan ifname in a generic way.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
package/base-files/files/lib/preinit/10_indicate_preinit

index b9368d90a901d4c10fa3535ebbf224da943ca534..206243390ebf3ecfd00d94d6478f14507311cae3 100644 (file)
@@ -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
 }