-#!/bin/sh
. /lib/functions.sh
. /lib/functions/uci-defaults.sh
. /lib/functions/system.sh
-rtl838x_setup_switch()
-{
- local lan lan_list
+_filter_port_list_ordered() {
+ local ports="$1"
+ local excluded="$2"
+ local sort_opts="$3"
+ echo $ports $excluded | xargs -n1 basename | sort -V $sort_opts | uniq -u | xargs
+}
- for lan in /sys/class/net/lan*; do
- lan_list="$lan_list $(basename $lan)"
- done
- ucidef_set_bridge_device switch
- ucidef_set_interface_lan "$lan_list"
+filter_port_list() {
+ _filter_port_list_ordered "$1" "$2"
}
-rtl838x_setup_macs()
-{
- local board="$1"
- local lan_mac
- local wan_mac
- local label_mac
-
- case $board in
- allnet,all-sg8208m|\
- netgear,gs110tpp-v1)
- lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
- label_mac=$lan_mac
- esac
-
- [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
- [ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
- [ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
+filter_port_list_reverse() {
+ _filter_port_list_ordered "$1" "$2" "-r"
}
-board_config_update
board=$(board_name)
-rtl838x_setup_switch
-rtl838x_setup_macs $board
+board_config_update
+
+lan_list=$(ls -1 -v -d /sys/class/net/lan* | xargs -n1 basename | xargs)
+
+ucidef_set_bridge_device switch
+ucidef_set_interface_lan "$lan_list"
+
+lan_mac=""
+lan_mac_start=""
+lan_mac_end=""
+label_mac=""
+case $board in
+hpe,1920-8g|\
+hpe,1920-8g-poe-65w|\
+hpe,1920-8g-poe-180w|\
+hpe,1920-16g|\
+hpe,1920-24g)
+ label_mac=$(mtd_get_mac_binary factory 0x68)
+ lan_mac=$label_mac
+ mac_count1=$(hexdump -v -n 4 -s 0x110 -e '4 "%d"' $(find_mtd_part factory) 2>/dev/null)
+ mac_count2=$(hexdump -v -n 4 -s 0x114 -e '4 "%d"' $(find_mtd_part factory) 2>/dev/null)
+ lan_mac_start=$(macaddr_add $lan_mac 2)
+ lan_mac_end=$(macaddr_add $lan_mac $((mac_count2-mac_count1)))
+ ;;
+tplink,sg2008p-v1|\
+tplink,sg2210p-v3|\
+tplink,sg2452p-v4|\
+tplink,t1600g-28ts-v3)
+ label_mac=$(get_mac_label)
+ lan_mac="$label_mac"
+ ;;
+*)
+ lan_mac=$(mtd_get_mac_ascii u-boot-env2 mac_start)
+ lan_mac_end=$(mtd_get_mac_ascii u-boot-env2 mac_end)
+ label_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
+ [ -z "$lan_mac" ] && lan_mac=$label_mac
+ ;;
+esac
+
+ucidef_set_interface_macaddr "lan" $lan_mac
+ucidef_set_bridge_mac "$lan_mac"
+ucidef_set_network_device_mac eth0 $lan_mac
+[ -z "$lan_mac_start" ] && lan_mac_start=$lan_mac
+for lan in $lan_list; do
+ ucidef_set_network_device_mac $lan $lan_mac_start
+ [ -z "$lan_mac_end" ] || [ "$lan_mac_start" == "$lan_mac_end" ] && lan_mac_start=$(macaddr_setbit_la $lan_mac_start)
+ lan_mac_start=$(macaddr_add $lan_mac_start 1)
+done
+[ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
+
+case $board in
+d-link,dgs-1210-10mp-f)
+ ucidef_set_poe 130 "$(filter_port_list "$lan_list" "lan9 lan10")"
+ ;;
+d-link,dgs-1210-10p)
+ ucidef_set_poe 65 "$(filter_port_list "$lan_list" "lan9 lan10")"
+ ;;
+d-link,dgs-1210-28mp-f)
+ ucidef_set_poe 370 "lan8 lan7 lan6 lan5 lan4 lan3 lan2 lan1 lan16 lan15 lan14 lan13 lan12 lan11 lan10 lan9 lan24 lan23
+ lan22 lan21 lan20 lan19 lan18 lan17"
+ ;;
+engenius,ews2910p)
+ ucidef_set_poe 60 "$(filter_port_list "$lan_list" "lan9 lan10")"
+ ;;
+hpe,1920-8g-poe-65w)
+ ucidef_set_poe 65 "$(filter_port_list_reverse "$lan_list" "lan9 lan10")"
+ ;;
+hpe,1920-8g-poe-180w)
+ ucidef_set_poe 180 "$(filter_port_list_reverse "$lan_list" "lan9 lan10")"
+ ;;
+netgear,gs110tpp-v1)
+ ucidef_set_poe 130 "$(filter_port_list "$lan_list" "lan9 lan10")"
+ ;;
+netgear,gs110tup-v1)
+ ucidef_set_poe 240 "$(filter_port_list "$lan_list" "lan9 lan10")"
+ ;;
+netgear,gs310tp-v1)
+ ucidef_set_poe 55 "$(filter_port_list "$lan_list" "lan9 lan10")"
+ ;;
+zyxel,gs1900-10hp)
+ ucidef_set_poe 77 "$(filter_port_list "$lan_list" "lan9 lan10")"
+ ;;
+zyxel,gs1900-8hp-v1|\
+zyxel,gs1900-8hp-v2)
+ ucidef_set_poe 70 "$lan_list"
+ ;;
+zyxel,gs1900-24ep)
+ ucidef_set_poe 130 "lan1 lan2 lan3 lan4 lan5 lan6 lan7 lan8 lan9 lan10 lan11 lan12"
+ ;;
+zyxel,gs1900-24hp-v1|\
+zyxel,gs1900-24hp-v2)
+ ucidef_set_poe 170 "$(filter_port_list "$lan_list" "lan25 lan26")"
+ ;;
+esac
+
board_config_flush
exit 0