OpenWrt – Rev 4

Subversion Repositories:
Rev:
#
# Copyright (C) 2009 OpenWrt.org
#

fetch_mac_from_mtd() {
        local mtd_part=$1
        local lan_env=$2
        local wan_env=$3
        local mtd mac

        mtd=$(grep $mtd_part /proc/mtd | cut -d: -f1)
        [ -z $mtd ] && return

        mac=$(grep $lan_env /dev/$mtd | cut -d= -f2)
        [ ! -z $mac ] && ifconfig eth0 hw ether $mac 2>/dev/null

        mac=$(grep $wan_env /dev/$mtd | cut -d= -f2)
        [ ! -z $mac ] && ifconfig eth1 hw ether $mac 2>/dev/null
}

preinit_set_mac_address() {
        . /lib/functions.sh

        case $(board_name) in
        c-55|\
        c-60)
                mac_lan=$(mtd_get_mac_binary art 0)
                [ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan"
                ;;
        dir-615-c1|\
        tew-632brp)
                fetch_mac_from_mtd config lan_mac wan_mac
                ;;
        dir-615-i1)
                fetch_mac_from_mtd nvram sys_lan_mac sys_wan_mac
                ;;
        mr18|\
        z1)
                mac_lan=$(mtd_get_mac_binary_ubi board-config 102)
                [ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan"
                ;;
        r6100)
                mac_lan=$(mtd_get_mac_binary caldata 0)
                [ -n "$mac_lan" ] && ifconfig eth1 hw ether "$mac_lan"
                mac_wan=$(mtd_get_mac_binary caldata 6)
                [ -n "$mac_wan" ] && ifconfig eth0 hw ether "$mac_wan"
                ;;
        rambutan)
                mac_lan=$(mtd_get_mac_binary art 0)
                [ -n "$mac_lan" ] && ifconfig eth0 hw ether "$mac_lan"
                mac_wan=$(mtd_get_mac_binary art 6)
                [ -n "$mac_wan" ] && ifconfig eth1 hw ether "$mac_wan"
                ;;
        wrt160nl)
                fetch_mac_from_mtd nvram lan_hwaddr wan_hwaddr
                ;;
        esac
}

boot_hook_add preinit_main preinit_set_mac_address