#!/bin/bash
red='\e[0;31m'
green='\e[0;32m'
yellow='\e[0;33m'
NC='\e[0m' # No Color

base="00:50:c2:67:"

let max=0x3fff
let minSerial=300

# Last byte for MGB mac address
declare -a mgbmac=(4e 50 52 54 56 58 5a 5c 5e 90 92 94 96 98 9a 9c 9e a0 a2 a4 a6 a8 aa ac ae b0 b2 b4 b6 b8 ba bc be c0 c2 c4 c6 c8 ca cc ce d0 d2 d4 d6 d8 da dc de e0 e2 e4 e6 e8 ea ec ee f0 f2 f4 f6 f8)


let advanced=0
if [ "${1}" == "advanced" ]; then
    let advanced=1
fi


isnews2m=$(lspci -n | grep -c "1011:f001")
ismgb=$(lspci -n | grep -c "1011:f002")
isQuadE1=$(lspci -n | grep -c "1011:f004")
isAtomBox=$(lspci -n | grep -c "1011:f005")

let ismgb=0
if [ "${1}" = "mgb" ]; then
    let ismgb=1
    serial=""
fi


modprobe cfgspc
patch-macaddr /usr/bin/mgb.img 2>&1 >/dev/null

if [ ${advanced} -ge 1 ] ; then
    if [ "x${2}" = "x" ] ;then 
        read -p "Please give last four digits of Mac-Address ${base}" macpart
    else
        #echo -e "${2}"
        base=${2:0:12}
        #echo -e "${base}"
        macpart=${2:12}
        #echo -e "${macpart}"
    fi
else
    if [ ${ismgb} -eq 0 ];then 
        serial=$(i2crdserial ${CONFIGBUS})
        #echo "serial=$serial"
	let part=$((0x3c41+${serial}-300)); 
        #printf "part=%04x\n" $part
	macpart=$( printf "%02x:%02x" $((${part}>>8)) $((${part}&0xff)) )
	if [ $serial -lt $minSerial ] ;then
            echo -en "${red}"
            echo -e "*************************************************************"
            echo -e "**** Serial number is less then 300"
            echo -e "*************************************************************"
            echo -en "${NC}"
            exit -2
	elif [ $part -le $max ] ;then
            echo -en "${green}"
            echo -e "*************************************************************"
            echo -e "**** Mac-Address is ${base}${macpart}"
            echo -e "*************************************************************"
            echo -en "${NC}"
	else
            echo -en "${red}"
            echo -e "*************************************************************"
            echo -e "**** no Mac-Address in pool left"
            echo -e "*************************************************************"
            echo -en "${NC}"
            exit -1
	fi
    else
        serial=''
	# It's an MGB
	if [ -z "${serial}" -o "${serial}" = "0" ]; then
	    while [ -z "${serial}" ]; do
		read -p "Serial number? " ans
		serial=$(echo "${ans}" | sed -e 's/^[Mm][Gg][Bb][0]*//')
		if [[ "${serial}" != [0-9]* ]]; then
                    echo "Number please"
                    serial=""
		    continue
		fi
		if [ ${serial} -le 442 ]; then
		    echo "Serial must be > 442"
		    serial=''
		fi
            done
	fi
	let t=$((${serial}-442-1))
	part=${mgbmac[${t}]}
	base="00:50:c2:20:"
        macpart="ad:${part}"
	
    fi
fi

    
if echo $macpart | grep -q "^[0-9A-Fa-f][0-9A-Fa-f]:[0-9A-Fa-f][0-9A-Fa-f]$" ; then
    patch-macaddr /usr/bin/mgb.img ${base}${macpart} | grep -v "Alte MAC"
    cat /usr/bin/mgb.img | rtl_eeprom w
    sleep 1
    rtl_eeprom r >/tmp/rtl.img
    if diff /tmp/rtl.img /usr/bin/mgb.img; then
    	echo -en "${green}"
        echo -e "*************************************************************"
	echo -e "********* Mac-Adresse successfuly written"
        echo -e "*************************************************************"
        echo -en "${NC}"
    else
	echo -en "${yellow}"
        echo -e "*************************************************************"
    	echo -e "******** Please restart to activate new Mac-Address"
        echo -e "*************************************************************"
        echo -en "${NC}"
    fi
else
    echo -en "${red}"
    echo -e "*************************************************************"
    echo -e "*************** Mac-Adresse not correct"
    echo -e "**** Mac-Address is ${base}${macpart}"
    echo -e "*************************************************************"
    echo -en "${NC}"
fi

#omgclearnetworksettings
