diff options
Diffstat (limited to 'target/linux')
| -rwxr-xr-x | target/linux/ramips/base-files/etc/uci-defaults/network | 119 | ||||
| -rwxr-xr-x | target/linux/ramips/base-files/etc/uci-defaults/nw718 | 36 | 
2 files changed, 116 insertions, 39 deletions
diff --git a/target/linux/ramips/base-files/etc/uci-defaults/network b/target/linux/ramips/base-files/etc/uci-defaults/network index 35b2fccdc..cd0feaf00 100755 --- a/target/linux/ramips/base-files/etc/uci-defaults/network +++ b/target/linux/ramips/base-files/etc/uci-defaults/network @@ -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 diff --git a/target/linux/ramips/base-files/etc/uci-defaults/nw718 b/target/linux/ramips/base-files/etc/uci-defaults/nw718 deleted file mode 100755 index 6fd96df6f..000000000 --- a/target/linux/ramips/base-files/etc/uci-defaults/nw718 +++ /dev/null @@ -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  | 
