#!/bin/sh . /etc/functions.sh . /lib/ramips.sh . /lib/functions/uci-defaults.sh if [ ! -x /usr/sbin/maccalc ]; then echo "$0: maccalc not found!" return fi ramips_get_mac_binary() { local mtdname="$1" local seek="$2" local part part=$(find_mtd_part "$mtdname") if [ -z "$part" ]; then 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 } ramips_get_mac_nvram() { local mtdname="$1" local key="$2" local part local mac_dirty part=$(find_mtd_part "$mtdname") if [ -z "$part" ]; then echo "ramips_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 } ramips_setup_interfaces() { local board="$1" ucidef_set_interface_loopback case $board in argus-atp52b | \ b2c | \ f5d8235-v2 | \ nw718) ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" ;; 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" ;; *) 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 } ramips_setup_macs() { local board="$1" local lan_mac="" local wan_mac="" case $board in f5d8235-v2) lan_mac=$(ramips_get_mac_nvram "u-boot" 262148) wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1) ;; argus-atp52b | \ b2c | \ nw718 | \ rt-n15) lan_mac=$(ramips_get_mac_binary factory 4) wan_mac=$(/usr/sbin/maccalc add "$lan_mac" 1) ;; 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