switch.sh 1.1 KB

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