switch.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. echo "$reset" > "$proc/reset"
  12. echo "$evlan" > "$proc/enable_vlan"
  13. [ -f "$proc/enable" ] && echo "$enable" > "$proc/enable"
  14. }
  15. local vlan
  16. for vlan in `seq 0 15`; do
  17. proc="/proc/switch/$dev/vlan/$vlan/ports"
  18. [ -f "$proc" ] && echo "" > "$proc"
  19. done
  20. }
  21. setup_switch_vlan() {
  22. local s="$1"
  23. local dev vlan ports
  24. config_get dev "$s" device
  25. config_get vlan "$s" vlan
  26. config_get ports "$s" ports
  27. [ -n "$dev" ] && [ -n "$vlan" ] && {
  28. ports="${ports%\*}"
  29. [ "$_vlan_pvid_set" = 1 ] || {
  30. ports="$ports*"
  31. _vlan_pvid_set=1
  32. }
  33. local proc="/proc/switch/$dev/vlan/$vlan/ports"
  34. [ -f "$proc" ] && echo "$ports" > "$proc"
  35. }
  36. }
  37. setup_switch() {
  38. _vlan_pvid_set=0
  39. config_load network
  40. config_foreach setup_switch_hw switch
  41. config_foreach setup_switch_vlan switch_vlan
  42. }