switch.sh 955 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. }
  16. setup_switch_vlan() {
  17. local s="$1"
  18. local dev vlan ports
  19. config_get dev "$s" device
  20. config_get vlan "$s" vlan
  21. config_get ports "$s" ports
  22. [ -n "$dev" ] && [ -n "$vlan" ] && {
  23. ports="${ports%\*}"
  24. [ "$_vlan_pvid_set" = 1 ] || {
  25. ports="$ports*"
  26. _vlan_pvid_set=1
  27. }
  28. local proc="/proc/switch/$dev/vlan/$vlan/ports"
  29. [ -f "$proc" ] && echo "$ports" > "$proc"
  30. }
  31. }
  32. setup_switch() {
  33. _vlan_pvid_set=0
  34. config_load network
  35. config_foreach setup_switch_hw switch
  36. config_foreach setup_switch_vlan switch_vlan
  37. }