aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2011-12-01 22:48:35 +0000
committerGabor Juhos <juhosg@openwrt.org>2011-12-01 22:48:35 +0000
commit02f95d4fb374f15f2d2dec2d5247505298bf523a (patch)
tree87e2d3e932015b3071138c0ed0e8c1aaf1c2efd0
parent0f74cb4631bb2741fd8692cb9e5999f369ad5d91 (diff)
downloadupstream-02f95d4fb374f15f2d2dec2d5247505298bf523a.tar.gz
upstream-02f95d4fb374f15f2d2dec2d5247505298bf523a.tar.bz2
upstream-02f95d4fb374f15f2d2dec2d5247505298bf523a.zip
ramips: combine network setup for all boards in one file
Inspired by the patch from Roman Yeryomin. Thanks, Roman! This removes unnecessary duplication and simplifies network setup for new boards. It would be a one line change most likely. [juhosg: setup lan and wan interfaces for unspecified rt3x0x based boards in order to avoid regression] Signed-off-by: Alexander Gordeev <lasaine@lvk.cs.msu.su> SVN-Revision: 29376
-rwxr-xr-xtarget/linux/ramips/base-files/etc/uci-defaults/network119
-rwxr-xr-xtarget/linux/ramips/base-files/etc/uci-defaults/nw71836
2 files changed, 116 insertions, 39 deletions
diff --git a/target/linux/ramips/base-files/etc/uci-defaults/network b/target/linux/ramips/base-files/etc/uci-defaults/network
index 35b2fccdc6..cd0feaf00b 100755
--- a/target/linux/ramips/base-files/etc/uci-defaults/network
+++ b/target/linux/ramips/base-files/etc/uci-defaults/network
@@ -1,6 +1,15 @@
#!/bin/sh
-RT3X5X=`cat /proc/cpuinfo | grep RT3.5`
-[ -z "${RT3X5X}" ] || {
+
+. /etc/functions.sh
+. /lib/ramips.sh
+
+if [ ! -x /usr/sbin/maccalc ]; then
+ echo "$0: maccalc not found!"
+ return
+fi
+
+create_lan_wan()
+{
uci batch <<EOF
set network.lan.ifname=eth0.1
set network.wan=interface
@@ -10,4 +19,108 @@ commit network
EOF
}
-uci commit network
+get_mac_binary()
+{
+ local mtdname="$1"
+ local seek="$2"
+ local part
+
+ part=$(find_mtd_part "$mtdname")
+ if [ -z "$part" ]; then
+ echo "get_mac_binary: partition $mtdname not found!" >&2
+ return
+ fi
+
+ dd bs=1 skip=$seek count=6 if=$part 2>/dev/null | /usr/sbin/maccalc bin2mac
+}
+
+get_mac_nvram()
+{
+ local mtdname="$1"
+ local key="$2"
+ local part
+ local mac_dirty
+
+ part=$(find_mtd_part "$mtdname")
+ if [ -z "$part" ]; then
+ echo "get_mac_nvram: partition $mtdname not found!" >&2
+ return
+ fi
+
+ mac_dirty=$(strings "$part" | sed -n 's/'"$key"'=//p')
+ # "canonicalize" mac
+ maccalc add "$mac_dirty" 0
+}
+
+set_macs()
+{
+ local lan_mac="$1"
+ local wan_mac="$2"
+
+ echo "Setting LAN mac address to: $lan_mac" >&2
+ echo "Setting WAN mac address to: $wan_mac" >&2
+
+ uci batch <<EOF
+set network.lan.macaddr='$lan_mac'
+set network.wan.macaddr='$wan_mac'
+commit network
+EOF
+}
+
+set_macs_only_lan()
+{
+ local lan_mac="$1"
+ local wan_mac
+
+ wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
+
+ set_macs "$lan_mac" "$wan_mac"
+}
+
+set_macs_only_lan_from_mtd()
+{
+ local mtdname="$1"
+ local seek="$2"
+ local lan_mac
+
+ lan_mac=$(get_mac_binary "$mtdname" "$seek")
+ if [ -z $lan_mac ]; then
+ echo "set_macs_only_lan_from_mtd: can't extract mac address from $part" >&2
+ return
+ fi
+
+ set_macs_only_lan "$lan_mac"
+}
+
+set_macs_only_lan_from_nvram()
+{
+ local mtdname="$1"
+ local key="$2"
+ local lan_mac
+
+ lan_mac=$(get_mac_nvram "$mtdname" "$key")
+ if [ -z $lan_mac ]; then
+ echo "set_macs_only_lan_from_nvram: can't extract mac address from $part" >&2
+ return
+ fi
+
+ set_macs_only_lan "$lan_mac"
+}
+
+board=$(ramips_board_name)
+
+case $board in
+ f5d8235-v2)
+ create_lan_wan
+ set_macs_only_lan_from_mtd "u-boot" 262148
+ ;;
+ argus-atp52b | \
+ nw718)
+ create_lan_wan
+ set_macs_only_lan_from_mtd "factory" 4
+ ;;
+ *)
+ RT3X5X=`cat /proc/cpuinfo | grep RT3.5`
+ [ -z "${RT3X5X}" ] || create_lan_wan
+ ;;
+esac
diff --git a/target/linux/ramips/base-files/etc/uci-defaults/nw718 b/target/linux/ramips/base-files/etc/uci-defaults/nw718
deleted file mode 100755
index 6fd96df6f8..0000000000
--- a/target/linux/ramips/base-files/etc/uci-defaults/nw718
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2011 OpenWrt.org
-#
-
-nw718_set_macs() {
- local part
- local lan_mac
- local wan_mac
-
- [ -z $(which maccalc) ] && return
-
- . /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 | maccalc bin2mac)
- [ -z $lan_mac ] && 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
-}
-
-. /lib/ramips.sh
-
-board=$(ramips_board_name)
-
-if [ "${board}" == "nw718" ]; then
- nw718_set_macs
-fi