openwrtv4/target/linux/ramips/base-files/etc/uci-defaults/network
Gabor Juhos 02f95d4fb3 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
2011-12-01 22:48:35 +00:00

126 lines
2.1 KiB
Bash
Executable file

#!/bin/sh
. /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
set network.wan.ifname=eth0.2
set network.wan.proto=dhcp
commit network
EOF
}
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