diff mbox

[LEDE-DEV] bcm53xx: set WAN MAC address to don't share one with LAN interface

Message ID 20170201154519.16411-1-zajec5@gmail.com
State Accepted
Headers show

Commit Message

Rafał Miłecki Feb. 1, 2017, 3:45 p.m. UTC
From: Rafał Miłecki <rafal@milecki.pl>

After analyzing numerous NVRAMs and vendor firmwares it seems the base
MAC address is used for LAN interface. WAN interface has different one
which sometimes is set directly in NVRAM and sometines needs to be
calculated.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 target/linux/bcm53xx/base-files/etc/board.d/02_network | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
diff mbox

Patch

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