01_network 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. # Copyright (C) 2006-2015 OpenWrt.org
  2. . /lib/functions/system.sh
  3. . /lib/functions/uci-defaults.sh
  4. configure_by_vlanports() {
  5. local vlan0ports="$(nvram get vlan0ports)"
  6. local vlan1ports="$(nvram get vlan1ports)"
  7. local vlan2ports="$(nvram get vlan2ports)"
  8. local cpuport="$(swconfig dev switch0 help 2>/dev/null | sed -ne "s|.*cpu @ \([0-9]*\).*|\1|p")"
  9. if [ "${vlan0ports:0:9}" = "0 1 2 3 8" -a "${vlan1ports:0:3}" = "4 8" -a ${cpuport:-0} -eq 8 ] || \
  10. [ "${vlan1ports:0:9}" = "0 1 2 3 8" -a "${vlan2ports:0:3}" = "4 8" -a ${cpuport:-0} -eq 8 ] || \
  11. [ "${vlan2ports:0:9}" = "0 1 2 3 8" -a "${vlan1ports:0:3}" = "4 8" -a ${cpuport:-0} -eq 8 ];
  12. then
  13. ucidef_add_switch "switch0" \
  14. "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "8@eth0"
  15. elif [ "${vlan0ports:0:9}" = "1 2 3 4 8" -a "${vlan1ports:0:3}" = "0 8" -a ${cpuport:-0} -eq 8 ] || \
  16. [ "${vlan1ports:0:9}" = "1 2 3 4 8" -a "${vlan2ports:0:3}" = "0 8" -a ${cpuport:-0} -eq 8 ] || \
  17. [ "${vlan2ports:0:9}" = "1 2 3 4 8" -a "${vlan1ports:0:3}" = "0 8" -a ${cpuport:-0} -eq 8 ];
  18. then
  19. ucidef_add_switch "switch0" \
  20. "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "8@eth0"
  21. elif [ "${vlan0ports:0:9}" = "0 1 2 3 5" -a "${vlan1ports:0:3}" = "4 5" -a ${cpuport:-0} -eq 5 ] || \
  22. [ "${vlan1ports:0:9}" = "0 1 2 3 5" -a "${vlan2ports:0:3}" = "4 5" -a ${cpuport:-0} -eq 5 ] || \
  23. [ "${vlan2ports:0:9}" = "0 1 2 3 5" -a "${vlan1ports:0:3}" = "4 5" -a ${cpuport:-0} -eq 5 ];
  24. then
  25. ucidef_add_switch "switch0" \
  26. "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5@eth0"
  27. elif [ "${vlan0ports:0:9}" = "1 2 3 4 5" -a "${vlan1ports:0:3}" = "0 5" -a ${cpuport:-0} -eq 5 ] || \
  28. [ "${vlan1ports:0:9}" = "1 2 3 4 5" -a "${vlan2ports:0:3}" = "0 5" -a ${cpuport:-0} -eq 5 ] || \
  29. [ "${vlan2ports:0:9}" = "1 2 3 4 5" -a "${vlan1ports:0:3}" = "0 5" -a ${cpuport:-0} -eq 5 ];
  30. then
  31. ucidef_add_switch "switch0" \
  32. "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5@eth0"
  33. else
  34. logger -t "01_network" "Unable to determine network configuration"
  35. ucidef_set_interface_lan "eth0"
  36. fi
  37. }
  38. configure_by_boardnum() {
  39. local boardnum="$1"
  40. case "$boardnum" in
  41. # WAP54G, Sitecom WL-105b
  42. "2" | \
  43. "1024")
  44. ucidef_set_interface_lan "eth0"
  45. ;;
  46. # Generic detection fallback
  47. *)
  48. configure_by_vlanports
  49. ;;
  50. esac
  51. }
  52. configure_by_boardtype() {
  53. local boardtype="$1"
  54. local boardnum="$2"
  55. case "$boardtype" in
  56. "bcm94710r4")
  57. ucidef_set_interfaces_lan_wan "eth0" "eth1"
  58. ;;
  59. "0x0467")
  60. ucidef_add_switch "switch0" \
  61. "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5@eth0"
  62. ;;
  63. "0x042f" | \
  64. "0x0472")
  65. # WL-500gP
  66. if [ "$boardnum" = "45" ]; then
  67. ucidef_add_switch "switch0" \
  68. "0:wan" "1:lan" "2:lan" "3:lan" "4:lan" "5@eth0"
  69. # Generic BCM94704
  70. else
  71. ucidef_set_interface_wan "eth1"
  72. ucidef_add_switch "switch0" \
  73. "0:lan" "1:lan" "2:lan" "3:lan" "4:lan" "5@eth0"
  74. # MAC addresses on 4704 tend to be screwed up. Add a workaround here
  75. local mac="$(nvram get et0macaddr)"
  76. local pat="[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]"
  77. pat="$pat:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]"
  78. pat="$pat:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]"
  79. case "$mac" in
  80. $pat)
  81. ucidef_set_interface_macaddr "lan" "$mac"
  82. ucidef_set_interface_macaddr "wan" "$(macaddr_add "$mac" 1)"
  83. ;;
  84. esac
  85. fi
  86. ;;
  87. # Buffalo WBR-B11 and Buffalo WBR-G54
  88. "bcm94710ap")
  89. ucidef_set_interface_wan "eth1"
  90. ucidef_add_switch "switch0" \
  91. "0:lan" "1:lan" "2:lan" "3:lan" "4:lan" "5@eth0"
  92. ;;
  93. *)
  94. configure_by_boardnum "$boardnum"
  95. ;;
  96. esac
  97. }
  98. configure_by_model() {
  99. local model="$1"
  100. local boardtype="$2"
  101. local boardnum="$3"
  102. # Netgear WGT634U exception
  103. if grep -sqE 'mtd0: 000(6|a)0000' /proc/mtd; then
  104. ucidef_add_switch "switch0" \
  105. "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5@eth0"
  106. return
  107. fi
  108. case "$model" in
  109. "Asus WLHDD" | \
  110. "Asus WL300G")
  111. ucidef_set_interface_lan "eth1"
  112. ;;
  113. "Asus WL330GE")
  114. ucidef_add_switch "switch0" "4:lan" "5t@eth0"
  115. ;;
  116. "Asus WL500G" | \
  117. "Microsoft MN-700")
  118. ucidef_set_interfaces_lan_wan "eth0" "eth1"
  119. ;;
  120. "Asus WL500GP V2")
  121. ucidef_add_switch "switch0" \
  122. "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan" "5@eth0"
  123. ;;
  124. "Asus RT-N12"* | \
  125. "Buffalo WHR-G125" | \
  126. "D-Link DIR-330" | \
  127. "Motorola WR850G" | \
  128. "Siemens SE505 V2")
  129. ucidef_add_switch "switch0" \
  130. "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5@eth0"
  131. ;;
  132. "Asus WL700")
  133. ucidef_add_switch "switch0" \
  134. "0:wan" "1:lan" "2:lan" "3:lan" "4:lan" "5@eth0"
  135. ;;
  136. "Asus WL500W" | \
  137. "Dell TrueMobile 2300")
  138. ucidef_set_interface_wan "eth1"
  139. ucidef_add_switch "switch0" \
  140. "0:lan" "1:lan" "2:lan" "3:lan" "5@eth0"
  141. ;;
  142. "Asus RT-N16"* | \
  143. "Linksys E3000 V1" | \
  144. "Linksys WRT610N V2" | \
  145. "Netgear WNR3500 V2" | \
  146. "Netgear WNR3500L" | \
  147. "Netgear WNR3500L V2")
  148. ucidef_add_switch "switch0" \
  149. "0:wan" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "8@eth0"
  150. ;;
  151. "Netgear R6200 V1")
  152. ucidef_add_switch "switch0" \
  153. "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan" "8@eth0"
  154. ;;
  155. "Netgear WN2500RP V1")
  156. ucidef_add_switch "switch0" \
  157. "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "5@eth0"
  158. ;;
  159. *)
  160. configure_by_boardtype "$boardtype" "$boardnum"
  161. ;;
  162. esac
  163. }
  164. model="$(cat /tmp/sysinfo/model)"
  165. boardtype="$(board_name)"
  166. case "$boardtype" in
  167. *:*)
  168. boardnum="${boardtype##*:}"
  169. boardtype="${boardtype%:*}"
  170. ;;
  171. esac
  172. board_config_update
  173. configure_by_model "$model" "$boardtype" "$boardnum"
  174. board_config_flush