. /etc/functions.sh
. /lib/ramips.sh
+. /lib/functions/uci-defaults.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()
+ramips_get_mac_binary()
{
local mtdname="$1"
local seek="$2"
part=$(find_mtd_part "$mtdname")
if [ -z "$part" ]; then
- echo "get_mac_binary: partition $mtdname not found!" >&2
+ echo "ramips_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()
+ramips_get_mac_nvram()
{
local mtdname="$1"
local key="$2"
part=$(find_mtd_part "$mtdname")
if [ -z "$part" ]; then
- echo "get_mac_nvram: partition $mtdname not found!" >&2
+ echo "ramips_get_mac_nvram: partition $mtdname not found!" >&2
return
fi
maccalc add "$mac_dirty" 0
}
-set_macs()
+ramips_setup_interfaces()
{
- local lan_mac="$1"
- local wan_mac="$2"
+ local board="$1"
- echo "Setting LAN mac address to: $lan_mac" >&2
- echo "Setting WAN mac address to: $wan_mac" >&2
+ ucidef_set_interface_loopback
- 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
+ case $board in
+ argus-atp52b | \
+ b2c | \
+ f5d8235-v2 | \
+ nw718)
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ ;;
- wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
+ rt-n15)
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ ucidef_add_switch "rtl8366s" "1" "1"
+ ucidef_add_switch_vlan "rtl8366s" "1" "1 2 3 4 5t"
+ ucidef_add_switch_vlan "rtl8366s" "2" "0 5t"
+ ;;
- set_macs "$lan_mac" "$wan_mac"
+ *)
+ RT3X5X=`cat /proc/cpuinfo | grep RT3.5`
+ if [ -n "${RT3X5X}" ]; then
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ else
+ ucidef_set_interfaces_lan_wan "eth0" "eth1"
+ fi
+ ;;
+ esac
}
-set_macs_only_lan_from_mtd()
+ramips_setup_macs()
{
- local mtdname="$1"
- local seek="$2"
- local lan_mac
+ local board="$1"
+ local lan_mac=""
+ local wan_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
+ case $board in
+ f5d8235-v2)
+ lan_mac=$(ramips_get_mac_nvram "u-boot" 262148)
+ wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
+ ;;
- set_macs_only_lan "$lan_mac"
-}
+ argus-atp52b | \
+ b2c | \
+ nw718 | \
+ rt-n15)
+ lan_mac=$(ramips_get_mac_binary factory 4)
+ wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
+ ;;
+ esac
-set_macs_only_lan_from_nvram()
-{
- local mtdname="$1"
- local key="$2"
- local lan_mac
+ [ -n $lan_mac ] && ucidef_set_interface_macaddr lan $lan_mac
+ [ -n $wan_mac ] && ucidef_set_interface_macaddr wan $wan_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
+[ -e /etc/config/network ] && exit 0
- set_macs_only_lan "$lan_mac"
-}
+touch /etc/config/network
board=$(ramips_board_name)
-case $board in
- f5d8235-v2)
- create_lan_wan
- set_macs_only_lan_from_mtd "u-boot" 262148
- ;;
- argus-atp52b | \
- b2c | \
- 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
+ramips_setup_interfaces $board
+ramips_setup_macs $board
+
+uci commit network
+
+exit 0