1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-07-05 04:52:22 +03:00
openwrt-xburst/package/switch/files/switch.sh
jow 9bbe7731c6 [package] switch: the hardware must be up while configuring
Since the removal of the interface coldplug hack the timing changed in such a way that eth0 is not up during switch setup,
leading to an inaccesible device. Bring up the switch interface before configuring it to mitigate the problem.


git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30937 3c298f89-4303-0410-b956-a3cf2f4a3e73
2012-03-13 21:15:41 +00:00

54 lines
1.1 KiB
Bash

#!/bin/sh
# Copyright (C) 2006-2010 OpenWrt.org
setup_switch_hw() {
local dev="$1"
local enable reset evlan
config_get_bool enable "$dev" enable 1
config_get_bool evlan "$dev" enable_vlan 1
config_get_bool reset "$dev" reset 1
local proc="/proc/switch/$dev"
[ -d "$proc" ] && {
ifconfig "$dev" up
echo "$reset" > "$proc/reset"
echo "$evlan" > "$proc/enable_vlan"
[ -f "$proc/enable" ] && echo "$enable" > "$proc/enable"
}
local vlan
for vlan in `seq 0 15`; do
proc="/proc/switch/$dev/vlan/$vlan/ports"
[ -f "$proc" ] && echo "" > "$proc"
done
}
setup_switch_vlan() {
local s="$1"
local dev vlan ports
config_get dev "$s" device
config_get vlan "$s" vlan
config_get ports "$s" ports
[ -n "$dev" ] && [ -n "$vlan" ] && {
ports="${ports%\*}"
[ "$_vlan_pvid_set" = 1 ] || {
ports="$ports*"
_vlan_pvid_set=1
}
local proc="/proc/switch/$dev/vlan/$vlan/ports"
[ -f "$proc" ] && echo "$ports" > "$proc"
}
}
setup_switch() {
_vlan_pvid_set=0
config_load network
config_foreach setup_switch_hw switch
config_foreach setup_switch_vlan switch_vlan
}