. /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()
-{
- 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()
+ramips_setup_interfaces()
{
- 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
-}
+ local board="$1"
-set_macs_only_lan()
-{
- local lan_mac="$1"
- local wan_mac
+ ucidef_set_interface_loopback
- wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
+ case $board in
+ all0256n)
+ ucidef_set_interface_lan "eth0.1"
+ ;;
- set_macs "$lan_mac" "$wan_mac"
-}
+ argus-atp52b | \
+ b2c | \
+ nw718 | \
+ sl-r7205 | \
+ w502u | \
+ wr6202)
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ ;;
-set_macs_only_lan_from_mtd()
-{
- local mtdname="$1"
- local seek="$2"
- local lan_mac
+ f5d8235-v1)
+ 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"
+ ;;
- 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
+ f5d8235-v2)
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ ucidef_add_switch "rtl8366rb" "1" "1"
+ ucidef_add_switch_vlan "rtl8366rb" "1" "1 2 3 4 5t"
+ ucidef_add_switch_vlan "rtl8366rb" "2" "0 5t"
+ ;;
- set_macs_only_lan "$lan_mac"
-}
+ rt-n15)
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ ucidef_add_switch "rtl8366s" "1" "1"
+ ucidef_add_switch_vlan "rtl8366s" "1" "0 1 2 3 5t"
+ ucidef_add_switch_vlan "rtl8366s" "2" "4 5t"
+ ;;
-set_macs_only_lan_from_nvram()
-{
- local mtdname="$1"
- local key="$2"
- local lan_mac
+ rt-n56u)
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ ucidef_add_switch "switch0" "1" "1"
+ ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 8t"
+ ucidef_add_switch_vlan "switch0" "2" "4 8t"
+ ;;
- 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
+ v11st-fe)
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ ucidef_add_switch "switch0" "1" "1"
+ ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 5t"
+ ucidef_add_switch_vlan "switch0" "2" "0 5t"
+ ;;
- set_macs_only_lan "$lan_mac"
-}
+ wcr-150gn)
+ ucidef_set_interface_lan_wan "eth0.2" "eth0.1"
+ ;;
-ramips_setup_interfaces()
-{
- local board="$1"
+ wl-351)
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ ucidef_add_switch "rtl8366rb" "1" "1"
+ ucidef_add_switch_vlan "rtl8366rb" "1" "0 1 2 3 5t"
+ ucidef_add_switch_vlan "rtl8366rb" "2" "4 5t"
+ ;;
- case $board in
- argus-atp52b | \
- b2c | \
- f5d8235-v2 | \
- nw718)
- create_lan_wan
+ wli-tx4-ag300n)
+ ucidef_set_interface_lan "eth0"
;;
*)
RT3X5X=`cat /proc/cpuinfo | grep RT3.5`
- [ -z "${RT3X5X}" ] || create_lan_wan
+ if [ -n "${RT3X5X}" ]; then
+ ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+ else
+ ucidef_set_interfaces_lan_wan "eth0" "eth1"
+ fi
;;
esac
}
ramips_setup_macs()
{
local board="$1"
+ local lan_mac=""
+ local wan_mac=""
case $board in
- f5d8235-v2)
- set_macs_only_lan_from_mtd "u-boot" 262148
+ all0256n)
+ lan_mac=$(ramips_get_mac_binary factory 40)
;;
argus-atp52b | \
b2c | \
- nw718)
- set_macs_only_lan_from_mtd "factory" 4
+ f5d8235-v1 | \
+ nw718 | \
+ rt-n15 | \
+ sl-r7205 | \
+ wl-351)
+ lan_mac=$(ramips_get_mac_binary factory 4)
+ wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
+ ;;
+
+ dir-300-b1 |\
+ dir-300-b2 |\
+ dir-600-b1)
+ lan_mac=$(ramips_get_mac_binary devdata 16388)
+ wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
;;
+
+ esr-9753 | \
+ nbg-419n | \
+ wcr-150gn)
+ lan_mac=$(ramips_get_mac_binary factory 4)
+ wan_mac=$(ramips_get_mac_binary factory 40)
+ ;;
+
+ f5d8235-v2)
+ lan_mac=$(ramips_get_mac_binary "u-boot" 262148)
+ wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
+ ;;
+
+ rt-n56u)
+ lan_mac=$(ramips_get_mac_binary factory 4)
+ wan_mac=$(ramips_get_mac_binary factory 32772)
+ ;;
+
+ w502u)
+ lan_mac=$(ramips_get_mac_binary factory 40)
+ wan_mac=$(ramips_get_mac_binary factory 46)
+ ;;
+
+ wl341v3)
+ lan_mac=$(ramips_get_mac_binary board-nvram 65440)
+ wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1)
+ ;;
+
+ wli-tx4-ag300n)
+ lan_mac=$(ramips_get_mac_binary factory 4)
+ ;;
+
esac
+
+ [ -n "$lan_mac" ] && ucidef_set_interface_macaddr lan $lan_mac
+ [ -n "$wan_mac" ] && ucidef_set_interface_macaddr wan $wan_mac
}
+[ -e /etc/config/network ] && exit 0
+
+touch /etc/config/network
+
board=$(ramips_board_name)
ramips_setup_interfaces $board
ramips_setup_macs $board
+
+uci commit network
+
+exit 0