From 6c9588ddf58ba1417cb92ee44d91c11bb77a7038 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 29 Jul 2016 00:25:09 +0200 Subject: [PATCH] base-files: configure switch in failsafe Also configure the switch based on the failsafe config, and create the failsafe interface as tagged if necessary. Signed-off-by: Jonas Gorski --- .../files/lib/preinit/10_indicate_preinit | 48 ++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/package/base-files/files/lib/preinit/10_indicate_preinit b/package/base-files/files/lib/preinit/10_indicate_preinit index 33e90b1d28..82b730f0c5 100644 --- a/package/base-files/files/lib/preinit/10_indicate_preinit +++ b/package/base-files/files/lib/preinit/10_indicate_preinit @@ -22,6 +22,41 @@ preinit_ip_config() { ip -4 address add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $1 } +preinit_config_switch() { + local role roles ports device enable reset + + local name=$1 + local lan_if=$2 + + json_select switch + json_select $name + + json_get_vars enable reset + + if json_is_a roles array; then + json_get_keys roles roles + json_select roles + + for role in $roles; do + json_select "$role" + json_get_vars ports device + json_select .. + + if [ "$device" = "$lan_if" ]; then + swconfig dev $name set reset $reset + swconfig dev $name set enable_vlan $enable + swconfig dev $name vlan $role set ports "$ports" + swconfig dev $name set apply + fi + done + + json_select .. + fi + + json_select .. + json_select .. +} + preinit_config_board() { /bin/board_detect /tmp/board.json @@ -43,8 +78,17 @@ preinit_config_board() { # only use the first one ifname=${ifname%% *} - # trim any vlan ids - ifname=${ifname%\.*} + if [ -x /sbin/swconfig ]; then + # configure the switch, if present + + json_get_keys keys switch + for key in $keys; do + preinit_config_switch $key $ifname + done + else + # trim any vlan ids + ifname=${ifname%\.*} + fi preinit_ip_config $ifname }