ramips: rt305x: fix mac addresses on the Netcore NW718 board
authorGabor Juhos <juhosg@openwrt.org>
Mon, 15 Aug 2011 18:55:53 +0000 (18:55 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Mon, 15 Aug 2011 18:55:53 +0000 (18:55 +0000)
SVN-Revision: 28006

target/linux/ramips/base-files/etc/uci-defaults/nw718
target/linux/ramips/base-files/lib/preinit/06_set_iface_mac [new file with mode: 0644]

index 986843ce77756933ac9381075f4cfcd242f4ccea..4ce3bc9af8aa1ededb2f6c7f1d503af197254a8f 100755 (executable)
@@ -3,6 +3,29 @@
 # Copyright (C) 2011 OpenWrt.org
 #
 
+nw718_set_macs() {
+       local part
+       local lan_mac
+       local wan_mac
+
+       . /etc/functions.sh
+
+       part=$(find_mtd_part "factory")
+       [ -z $part ] && return
+
+       lan_mac=$(dd bs=1 skip=4 count=6 if=$part 2>/dev/null | hexdump -v -e '1/1 "%02x"' | sed 's/\(..\)/\1:/g;s/:$//')
+       [ -z $lan_mac ] && return
+
+       [ -z $(which maccalc) ] && return
+       wan_mac=$(maccalc add $lan_mac 1)
+
+       uci batch <<EOF
+set network.lan.macaddr='$lan_mac'
+set network.wan.macaddr='$wan_mac'
+commit network
+EOF
+}
+
 nw718_set_leds() {
        uci batch <<EOF
 set system.usb_led=led
@@ -21,4 +44,5 @@ board=$(ramips_board_name)
 
 if [ "${board}" == "nw718" ]; then
        nw718_set_leds
+       nw718_set_macs
 fi
diff --git a/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac b/target/linux/ramips/base-files/lib/preinit/06_set_iface_mac
new file mode 100644 (file)
index 0000000..4be625b
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# Copyright (C) 2011 OpenWrt.org
+#
+
+nw718_set_mac() {
+       local part
+       local mac
+
+       [ -z $(which maccalc) ] && return
+
+       . /etc/functions.sh
+
+       part=$(find_mtd_part "factory")
+       [ -z $part ] && return
+
+       mac=$(dd bs=1 skip=4 count=6 if=$part 2>/dev/null | maccalc bin2mac)
+       [ -z $mac ] && return
+
+       mac=$(maccalc or "$mac" "02:00:00:00:00:00")
+       ifconfig eth0 hw ether $mac 2>/dev/null
+}
+
+preinit_set_mac_address() {
+       . /lib/ramips.sh
+
+       case $(ramips_board_name) in
+       nw718)
+               nw718_set_mac
+               ;;
+       esac
+}
+
+boot_hook_add preinit_main preinit_set_mac_address