Make use of the existing board.d to autodetect lan ifname in a generic way.
Signed-off-by: Jonas Gorski <jonas.gor...@gmail.com> --- .../files/lib/preinit/10_indicate_preinit | 45 ++++++++++++++++++++-- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/package/base-files/files/lib/preinit/10_indicate_preinit b/package/base-files/files/lib/preinit/10_indicate_preinit index 717d35c..4be4f30 100644 --- a/package/base-files/files/lib/preinit/10_indicate_preinit +++ b/package/base-files/files/lib/preinit/10_indicate_preinit @@ -2,6 +2,42 @@ # Copyright (C) 2006 OpenWrt.org # Copyright (C) 2010 Vertical Communications +preinit_config_netdev() { + grep -q "$1" /proc/net/dev || return + + ip link set dev $1 up + ip -4 address add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $1 +} + +preinit_config_board() { + [ -z "$ifname" ] || return + + /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_config_netdev $ifname +} + preinit_ip() { # if the preinit interface isn't specified and ifname is set in # preinit.arch use that interface @@ -9,10 +45,11 @@ preinit_ip() { pi_ifname=$ifname fi - [ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && { - ip link set dev $pi_ifname up - ip -4 address add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $pi_ifname - } + if [ -n "$pi_ifname" ]; then + preinit_config_netdev $pi_ifname + elif [ -d "/etc/board.d/" ]; then + preinit_config_board + fi } preinit_ip_deconfig() { -- 2.1.4 _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev