1 | #!/bin/sh |
2 | # Copyright (C) 2006-2010 OpenWrt.org |
3 | |
4 | setup_switch_hw() { |
5 | local dev="$1" |
6 | local enable reset evlan |
7 | |
8 | config_get_bool enable "$dev" enable 1 |
9 | config_get_bool evlan "$dev" enable_vlan 1 |
10 | config_get_bool reset "$dev" reset 1 |
11 | |
12 | local proc="/proc/switch/$dev" |
13 | [ -d "$proc" ] && { |
14 | echo "$reset" > "$proc/reset" |
15 | echo "$evlan" > "$proc/enable_vlan" |
16 | [ -f "$proc/enable" ] && echo "$enable" > "$proc/enable" |
17 | } |
18 | |
19 | local vlan |
20 | for vlan in `seq 0 15`; do |
21 | proc="/proc/switch/$dev/vlan/$vlan/ports" |
22 | [ -f "$proc" ] && echo "" > "$proc" |
23 | done |
24 | } |
25 | |
26 | setup_switch_vlan() { |
27 | local s="$1" |
28 | local dev vlan ports |
29 | |
30 | config_get dev "$s" device |
31 | config_get vlan "$s" vlan |
32 | config_get ports "$s" ports |
33 | |
34 | [ -n "$dev" ] && [ -n "$vlan" ] && { |
35 | ports="${ports%\*}" |
36 | |
37 | [ "$_vlan_pvid_set" = 1 ] || { |
38 | ports="$ports*" |
39 | _vlan_pvid_set=1 |
40 | } |
41 | |
42 | local proc="/proc/switch/$dev/vlan/$vlan/ports" |
43 | [ -f "$proc" ] && echo "$ports" > "$proc" |
44 | } |
45 | } |
46 | |
47 | setup_switch() { |
48 | _vlan_pvid_set=0 |
49 | config_load network |
50 | config_foreach setup_switch_hw switch |
51 | config_foreach setup_switch_vlan switch_vlan |
52 | } |
53 | |