60b699d9c96711dd6b8f7087c13c3eb3a65635da
[openwrt/openwrt.git] / target / linux / mediatek / mt7623 / base-files / lib / preinit / 07_set_iface_mac
1 # Copyright (C) 2018 OpenWrt.org
2
3 . /lib/functions.sh
4 . /lib/functions/system.sh
5
6 set_recovery_mac_address() {
7 local RECOVERY_PART="$1"
8 local mac
9
10 if [ -b $RECOVERY_PART ]; then
11 insmod nls_cp437
12 insmod nls_iso8859-1
13 insmod fat
14 insmod vfat
15 mkdir -p /tmp/recovery
16 if mount -o rw,noatime $RECOVERY_PART -t vfat /tmp/recovery; then
17 if [ -f "/tmp/recovery/mac_addr" ];
18 then
19 mac=$(cat /tmp/recovery/mac_addr)
20 else
21 mac=$(cat /sys/class/net/eth0/address)
22 echo "$mac" > /tmp/recovery/mac_addr
23 fi
24
25 sync
26 umount /tmp/recovery
27 rmdir /tmp/recovery
28
29 ip link set dev wan address $mac 2> /dev/null
30
31 mac=$(macaddr_add $mac 1)
32
33 ip link set dev lan0 address $mac 2>/dev/null
34 ip link set dev lan1 address $mac 2>/dev/null
35 ip link set dev lan2 address $mac 2>/dev/null
36 ip link set dev lan3 address $mac 2>/dev/null
37 fi
38 fi
39 }
40
41 preinit_set_mac_address() {
42 local rootpart
43
44 case $(board_name) in
45 bananapi,bpi-r2)
46 rootpart=$(cat /proc/cmdline)
47 rootpart="${rootpart##*root=}"
48 rootpart="${rootpart%%p3 *}"
49 if [ "$rootpart" = "/dev/mmcblk0" -o "$rootpart" = "/dev/mmcblk1" ]; then
50 set_recovery_mac_address ${rootpart}p2
51 fi
52 ;;
53 unielec,u7623-02-emmc-512m)
54 set_recovery_mac_address /dev/mmcblk0p1
55 ;;
56 esac
57 }
58
59 boot_hook_add preinit_main preinit_set_mac_address