dir-825-b1: Fix wholeflash images: Attempting to flash a wholeflash (-openwrt) image...
[openwrt/staging/yousong.git] / target / linux / ar71xx / base-files / etc / uci-defaults / caldata-migration
1 #!/bin/sh
2 #
3 # Copyright (C) 2011 OpenWrt.org
4 #
5
6 . /lib/functions/uci-defaults.sh
7 . /lib/ar71xx.sh
8
9 board=$(ar71xx_board_name)
10
11 findmtd() {
12 local partname="$1"
13 grep "\"$partname\"" /proc/mtd | awk -F: '{ print $1 }'
14 }
15
16 getcalmac() {
17 local partname="$1"
18 local offset="$2"
19
20 hexdump -e '17/1 "%c"' -s $offset -n 17 /dev/$(findmtd $partname) | tr -d : | tr 'A-Z' 'a-z'
21 }
22
23 calcmacX() {
24 local mac="$1"
25 local X="$2"
26
27 local oui="$(expr substr "$mac" 1 6)"
28 local end="$(expr substr "$mac" 7 12)"
29
30 echo -n $oui
31 expr substr "$(printf "%6lx" "$(($(printf "%lu" 0x${end}) + $X))")" 1 6
32 }
33
34 getifmac() {
35 local ifname="$1"
36
37 local ifmac
38
39 ifmac="$(ifconfig "$ifname" | grep HWaddr)"
40 ifmac="${ifmac#*HWaddr }"
41 ifmac="${ifmac%% *}"
42
43 echo "$ifmac" | tr -d : | tr 'A-Z' 'a-z'
44 }
45
46 case "$board" in
47 dir-825-b1-towholeflash)
48 mac1="$(getcalmac caldata 65440)"
49 mac1="$(calcmacX "$mac1" 2)"
50 mac2="$(calcmacX "$mac1" 1)"
51
52 if grep -q '"owrt_caldata"' /proc/mtd && [ "$mac1" = "$(getifmac eth0)" ] && [ "$mac2" = "$(getifmac eth1)" ]; then
53 mtd erase owrt_caldata
54 dd if=/dev/$(findmtd caldata) of=/dev/$(findmtd owrt_caldata) bs=65536 count=1
55 fi
56 ;;
57 dir-825-b1-tostock)
58 mac1="$(getcalmac owrt_caldata 65440)"
59 mac1="$(calcmacX "$mac1" 2)"
60 mac2="$(calcmacX "$mac1" 1)"
61 if grep -q '"owrt_caldata"' /proc/mtd && [ "$mac1" = "$(getifmac eth0)" ] && [ "$mac2" = "$(getifmac eth1)" ]; then
62 mtd erase caldata
63 dd if=/dev/$(findmtd owrt_caldata) of=/dev/$(findmtd caldata) bs=65536 count=1
64 fi
65 ;;
66 esac
67
68 return 0