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
This commit is contained in:
Gabor Juhos 2011-12-01 22:48:35 +00:00
parent 0f74cb4631
commit 02f95d4fb3
2 changed files with 116 additions and 39 deletions

View File

@ -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

View File

@ -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