X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/b74589690e9a124421651935d6713c408831b2a2..de50d6624ffd8250930462e43163bdec1747a999:/package/switch/files/switch.sh diff --git a/package/switch/files/switch.sh b/package/switch/files/switch.sh index 14bacadc5..6517ca985 100644 --- a/package/switch/files/switch.sh +++ b/package/switch/files/switch.sh @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2006-2009 OpenWrt.org +# Copyright (C) 2006-2010 OpenWrt.org setup_switch_hw() { local dev="$1" @@ -13,8 +13,14 @@ setup_switch_hw() { [ -d "$proc" ] && { echo "$reset" > "$proc/reset" echo "$evlan" > "$proc/enable_vlan" - echo "$enable" > "$proc/enable" + [ -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() { @@ -25,13 +31,21 @@ setup_switch_vlan() { config_get vlan "$s" vlan config_get ports "$s" ports - [ -n "$dev" ] && [ -n "$vlan" ] && { + [ -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