02_network 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/bin/sh
  2. #
  3. # Copyright (C) 2011 OpenWrt.org
  4. #
  5. . /lib/functions/uci-defaults.sh
  6. board_config_update
  7. board=$(cat /proc/device-tree/compatible | tr '\0' '\t' | cut -f 1)
  8. case "$board" in
  9. asus,rt-ac87u)
  10. ifname=eth1
  11. ;;
  12. dlink,dir-885l | \
  13. netgear,r7900 | \
  14. netgear,r8000 | \
  15. netgear,r8500)
  16. ifname=eth2
  17. ;;
  18. *)
  19. ifname=eth0
  20. ;;
  21. esac
  22. # Workaround for devices using eth2 connected to (CPU) switch port 8
  23. case "$board" in
  24. dlink,dir-885l | \
  25. netgear,r7900 | \
  26. netgear,r8000 | \
  27. netgear,r8500)
  28. ifname=eth0
  29. ucidef_add_switch "switch0" \
  30. "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5t@$ifname"
  31. board_config_flush
  32. exit 0
  33. ;;
  34. esac
  35. # NVRAM entries may contain unsorted ports, e.g. Netgear R6250 uses
  36. # vlan1ports=3 2 1 0 5*
  37. # vlan2ports=4 5u
  38. # and early Netgear R8000 was using
  39. # vlan1ports=3 2 1 0 5 7 8*
  40. vlan1ports="$(echo $(nvram get vlan1ports | tr " " "\n" | sort))"
  41. vlan2ports="$(echo $(nvram get vlan2ports | tr " " "\n" | sort))"
  42. if echo "$vlan1ports" | egrep -q "^1 2 3 4 5" && \
  43. echo "$vlan2ports" | egrep -q "^0 5"; then
  44. ucidef_add_switch "switch0" \
  45. "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5t@$ifname"
  46. elif echo "$vlan1ports" | egrep -q "^1 2 3 5 7" && \
  47. echo "$vlan2ports" | egrep -q "^0 7"; then
  48. ucidef_add_switch "switch0" \
  49. "1:lan" "2:lan" "3:lan" "5:lan" "0:wan" "7t@$ifname"
  50. elif echo "$vlan1ports" | egrep -q "^0 1 2 3 5 7 8" && \
  51. echo "$vlan2ports" | egrep -q "^4 8"; then
  52. ucidef_add_switch "switch0" \
  53. "0:lan" "1:lan" "2:lan" "3:lan" "5:lan" "7:lan" "4:wan" "8t@$ifname"
  54. else
  55. ucidef_add_switch "switch0" \
  56. "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5t@$ifname"
  57. fi
  58. board_config_flush
  59. exit 0