aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtarget/linux/bcm53xx/base-files/etc/board.d/02_network11
1 files changed, 10 insertions, 1 deletions
diff --git a/target/linux/bcm53xx/base-files/etc/board.d/02_network b/target/linux/bcm53xx/base-files/etc/board.d/02_network
index 0a055f4d1f..fa2837cba2 100755
--- a/target/linux/bcm53xx/base-files/etc/board.d/02_network
+++ b/target/linux/bcm53xx/base-files/etc/board.d/02_network
@@ -25,22 +25,28 @@ buffalo,wzr-1750dhp)
;;
esac
+wan_macaddr="$(nvram get wan_hwaddr)"
case "$board" in
asus,rt-ac87u)
ifname=eth1
+ etXmacaddr=$(nvram get et1macaddr)
;;
dlink,dir-885l | \
netgear,r7900 | \
netgear,r8000 | \
netgear,r8500)
-
ifname=eth2
+ etXmacaddr=$(nvram get et2macaddr)
;;
*)
ifname=eth0
+ etXmacaddr=$(nvram get et0macaddr)
;;
esac
+# If WAN MAC isn't explicitly set, calculate it using base MAC as reference.
+[ -z "$wan_macaddr" -a -n "$etXmacaddr" ] && wan_macaddr=$(macaddr_add "$etXmacaddr" 1)
+
# Workaround for devices using eth2 connected to (CPU) switch port 8
case "$board" in
dlink,dir-885l | \
@@ -55,6 +61,7 @@ netgear,r8500)
# assigned. Manually assign eth2's MAC to the LAN.
et2macaddr="$(nvram get et2macaddr)"
[ -n "$et2macaddr" ] && ucidef_set_interface_macaddr "lan" "$et2macaddr"
+ [ -n "$wan_macaddr" ] && ucidef_set_interface_macaddr "wan" "$wan_macaddr"
board_config_flush
exit 0
@@ -85,6 +92,8 @@ else
"0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5t@$ifname"
fi
+[ -n "$wan_macaddr" ] && ucidef_set_interface_macaddr "wan" "$wan_macaddr"
+
board_config_flush
exit 0