[ "$ACTION" == "add" ] || exit 0

PHYNBR=${DEVPATH##*/phy}

[ -n $PHYNBR ] || exit 0

. /lib/functions.sh
. /lib/functions/system.sh

board=$(board_name)

case "$board" in
	arcadyan,we420223-99)
		if [ "$PHYNBR" = "0" ]; then
			mac24=$(macaddr_add "$(get_mac_label)" "0xf00001")
			echo -n "$mac24" > /sys${DEVPATH}/macaddress
		elif [ "$PHYNBR" = "1" ]; then
			mac5=$(macaddr_add "$(get_mac_label)" 1)
			echo -n "$mac5" > /sys${DEVPATH}/macaddress
		fi
		;;
	beeline,smartbox-flash)
		hw_mac_addr=$(macaddr_add $(mtd_get_mac_encrypted_arcadyan "board_data") 1)
		[ "$PHYNBR" = "0" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress
		hw_mac_addr=$(macaddr_setbit   $hw_mac_addr 26)
		hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 27)
		hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 28)
		[ "$PHYNBR" = "1" ] && macaddr_setbit_la $hw_mac_addr > /sys${DEVPATH}/macaddress
		;;
	cudy,x6)
		hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
		macaddr_add $hw_mac_addr "$PHYNBR" > /sys${DEVPATH}/macaddress
		;;
	dlink,dap-x1860-a1)
		hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
		[ "$PHYNBR" = "0" ] && \
			macaddr_add $hw_mac_addr 1 > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && \
			macaddr_add $hw_mac_addr 4 > /sys${DEVPATH}/macaddress
		;;
	dlink,dir-853-a1)
		lan_mac_addr="$(mtd_get_mac_binary factory 0xe000)"
		[ "$PHYNBR" = "0" ] && \
			macaddr_add $lan_mac_addr 1 > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && \
			macaddr_add $lan_mac_addr 2 > /sys${DEVPATH}/macaddress
		;;
	dlink,dir-853-a3)
		[ "$PHYNBR" = "0" ] && \
			macaddr_setbit_la "$(mtd_get_mac_binary factory 0xe000)" \
				> /sys${DEVPATH}/macaddress
		;;
	dlink,dir-853-r1|\
	phicomm,k2p)
		if [ "$PHYNBR" = "0" ]; then
			base_mac=$(macaddr_add "$(mtd_get_mac_binary factory 0x4)" -1)
			macaddr_setbit_la "$base_mac" > /sys${DEVPATH}/macaddress
		fi
		;;
	glinet,gl-mt1300)
		[ "$PHYNBR" = "1" ] && \
			macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1 > /sys${DEVPATH}/macaddress
		;;
	h3c,tx1800-plus|\
	h3c,tx1801-plus|\
	h3c,tx1806)
		addr=$(macaddr_setbit $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) 2) 7)
		[ "$PHYNBR" = "0" ] && echo -n ${addr:0:9}'1'${addr:10:7} > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && echo -n ${addr:0:9}'7'${addr:10:7} > /sys${DEVPATH}/macaddress
		;;
	haier,har-20s2u1|\
	jcg,y2|\
	sim,simax1800t)
		[ "$PHYNBR" = "1" ] && \
			macaddr_setbit_la "$(mtd_get_mac_binary factory 0x4)" > /sys${DEVPATH}/macaddress
		;;
	hiwifi,hc5962)
		label_mac=$(mtd_get_mac_ascii bdinfo "Vfac_mac ")
		[ "$PHYNBR" = "0" ] && [ -n "$label_mac" ] && \
		echo -n "$label_mac" > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && [ -n "$label_mac" ] && \
		macaddr_unsetbit "$label_mac" 6 > /sys${DEVPATH}/macaddress
		;;
	iptime,a3002mesh|\
	iptime,a3004t)
		hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
		[ "$PHYNBR" = "0" ] && \
			macaddr_setbit_la "$(macaddr_add $hw_mac_addr 3)" > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress
		;;
	iptime,ax2004m)
		if [ "$PHYNBR" = "1" ]; then
			hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
			macaddr_setbit_la "$(macaddr_add $hw_mac_addr 3)" > /sys${DEVPATH}/macaddress
		fi
		;;
	jcg,q20)
		[ "$PHYNBR" = "1" ] && \
			macaddr_setbit_la "$(mtd_get_mac_binary Factory 0x4)" > /sys${DEVPATH}/macaddress
		;;
	jdcloud,re-sp-01b)
		local index="$(find_mtd_index "config")"
		local label_mac=$(macaddr_canonicalize $(dd if="/dev/mtd${index}" bs=12 skip=17449 iflag=skip_bytes count=1 2>/dev/null))
		[ "$PHYNBR" -eq 0 ] && echo $label_mac > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" -eq 1 ] && macaddr_add $label_mac 0x800000 > /sys${DEVPATH}/macaddress
		;;
	linksys,e5600|\
	linksys,ea6350-v4|\
	linksys,ea7300-v1|\
	linksys,ea7300-v2|\
	linksys,ea7500-v2|\
	linksys,ea8100-v1|\
	linksys,ea8100-v2)
		hw_mac_addr=$(mtd_get_mac_ascii devinfo hw_mac_addr)
		[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 1 > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
		;;
	belkin,rt1800|\
	linksys,e7350)
		hw_mac_addr=$(mtd_get_mac_ascii Config wan_hwaddr)
		[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 1 > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
		;;
	netgear,wax202)
		hw_mac_addr=$(mtd_get_mac_ascii Config mac)
		[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 3 > /sys${DEVPATH}/macaddress
		;;
	mercusys,mr70x-v1|\
	tplink,archer-ax23-v1)
		hw_mac_addr="$(mtd_get_mac_binary config 0x8)"
		[ "$PHYNBR" = "1" ] &&  macaddr_add "$hw_mac_addr" -1 > "/sys${DEVPATH}/macaddress"
		;;
	mts,wg430223)
		hw_mac_addr=$(macaddr_add $(mtd_get_mac_encrypted_arcadyan "board_data") 1)
		[ "$PHYNBR" = "0" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress
		hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 26)
		hw_mac_addr=$(macaddr_setbit   $hw_mac_addr 27)
		hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 28)
		[ "$PHYNBR" = "1" ] && macaddr_setbit_la $hw_mac_addr > /sys${DEVPATH}/macaddress
		;;
	oraybox,x3a)
		if [ "$PHYNBR" = "1" ]; then
			hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
			macaddr_setbit_la "$(macaddr_add $hw_mac_addr 0x100000)" > /sys${DEVPATH}/macaddress
		fi
		;;
	raisecom,msg1500-x-00)
		[ "$PHYNBR" = "0" ] && \
			macaddr_setbit_la "$(mtd_get_mac_ascii Config protest_lan_mac)" \
				> /sys${DEVPATH}/macaddress
		;;
	snr,snr-cpe-me2-sfp)
		hw_mac_addr="$(mtd_get_mac_binary factory 0x8004)"
		[ "$PHYNBR" = "1" ] &&  echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress
		;;
	tenbay,t-mb5eu-v01)
		hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
		[ "$PHYNBR" = "1" ] &&  macaddr_add $hw_mac_addr "0x100000" > /sys${DEVPATH}/macaddress
		;;
	totolink,x5000r)
		hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
		[ "$PHYNBR" = "1" ] &&  macaddr_add $hw_mac_addr 4 > /sys${DEVPATH}/macaddress
		;;
	tplink,eap615-wall-v1)
		hw_mac_addr="$(mtd_get_mac_binary product-info 0x8)"
		macaddr_add "$hw_mac_addr" "$PHYNBR" > "/sys${DEVPATH}/macaddress"
		;;
	tplink,ec330-g5u-v1)
		hw_mac_addr="$(mtd_get_mac_text factory 0x165)"
		[ "$PHYNBR" = "0" ] && echo -n $hw_mac_addr > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
		;;
	yuncore,ax820)
		[ "$PHYNBR" = "1" ] && \
			macaddr_setbit_la "$(mtd_get_mac_binary Factory 0xe000)" > /sys${DEVPATH}/macaddress
		;;
	yuncore,fap640|\
	yuncore,fap690)
		hw_mac_addr="$(mtd_get_mac_binary Factory 0x4)"
		[ "$PHYNBR" = "0" ] && macaddr_setbit_la "$hw_mac_addr" > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress
		;;
	zyxel,nwa50ax|\
	zyxel,nwa55axe)
		hw_mac_addr="$(mtd_get_mac_binary mrd 0x1fff8)"
		[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 1 > /sys${DEVPATH}/macaddress
		[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
		;;
esac
