#!/bin/sh
# Copyright (C) 2006 OpenWrt.org
# Copyright (C) 2010 Vertical Communications

do_dni_mount_root() {

echo "Before DNI mount_root"

mkdir -p /tmp/mnt
mkdir -p /tmp/overlay

mount -t overlayfs -olowerdir=/,upperdir=/tmp/overlay "overlayfs:/tmp/overlay" /mnt

. /lib/functions/preinit.sh

pivot /mnt /rom

	model_name=$(/sbin/artmtd -r board_model_id | cut -f 2 -d ":")
	if [ -z "$(grep vol_ntgrdata /proc/mtd)" -a -n "$(grep ntgrdata /proc/mtd)" ]; then
		echo "Info: init ubi volumes on ntgrdata raw partition"

		mtdn=$(sed -nr 's/mtd([0-9]*):.*"ntgrdata"/\1/p' /proc/mtd)
		if [ -z "$mtdn" ]; then
			echo "Error: can't find ntgrdata partition in mtd device!"
		else
			ubiattach /dev/ubi_ctrl -m $mtdn
			if [ -n "$(grep vol_ntgrdata /proc/mtd)" ]; then
				echo "Info: attach ubi device on ntgrdata success!"
			else
				if [ "x$model_name" = "xRBR10" ]; then
					ubinize -m 2048 -p 128KiB -o /tmp/ntgrdata.ubi /etc/ntgrdata.cfg
				fi
				ubidetach /dev/ubi_ctrl -m $mtdn
				flash_erase /dev/mtd$mtdn 0 0
				nandwrite -p /dev/mtd$mtdn /tmp/ntgrdata.ubi
				ubiattach /dev/ubi_ctrl -m $mtdn
			fi
		fi

		if [ -z "$(grep vol_ntgrdata /proc/mtd)" ]; then
			echo "Error: create ubi volumes on ntgrdata raw partition fail!"
		else
			ubidev=$(ubinfo -a | grep -B5 vol_ntgrdata | sed -nr 's/Volume ID:.*\(on (ubi.*)\)/\1/p')
			if [ "x$(df |grep $ubidev:vol_ntgrdata)" = "x" ]; then
				[ ! -d /tmp/ntgrdata ] && mkdir -p /tmp/ntgrdata
				mount $ubidev:vol_ntgrdata /tmp/ntgrdata -t ubifs
				if [ $? -ne 0 ]; then
					mount $ubidev:vol_ntgrdata /tmp/ntgrdata -t ubifs
				fi

				[ ! -d /tmp/ntgrdata/circle ] && mkdir -p /tmp/ntgrdata/circle
				[ ! -d /tmp/ntgrdata/armor ] && mkdir -p /tmp/ntgrdata/armor
				[ ! -d /tmp/ntgrdata/forceshield ] && mkdir -p /tmp/ntgrdata/forceshield
				[ ! -d /tmp/ntgrdata/rae ] && mkdir -p /tmp/ntgrdata/rae
				[ ! -d /tmp/ntgrdata/devtable ] && mkdir -p /tmp/ntgrdata/devtable
				[ ! -d /tmp/ntgrdata/dal ] && mkdir -p /tmp/ntgrdata/dal
				[ ! -d /tmp/ntgrdata/https_cert ] && mkdir -p /tmp/ntgrdata/https_cert
			fi
		fi
	fi

	if [ -z "$(grep vol_jdx /proc/mtd)" -a -n "$(grep secdata /proc/mtd)" ]; then
		echo "Info: init ubi volumes on secdata raw partition"

		mtdn=$(sed -nr 's/mtd([0-9]*):.*"secdata"/\1/p' /proc/mtd)
		if [ -z "$mtdn" ]; then
			echo "Error: can't find secdata partition in mtd device!"
		else
			ubiattach /dev/ubi_ctrl -m $mtdn
			if [ -n "$(grep vol_jdx /proc/mtd)" ]; then
				echo "Info: attach ubi device on secdata success!"
			else
				if [ "x$model_name" = "xRBR10" ]; then
					ubinize -m 2048 -p 128KiB -o /tmp/secdata.ubi /etc/secdata.cfg
				fi
				ubidetach /dev/ubi_ctrl -m $mtdn
				flash_erase /dev/mtd$mtdn 0 0
				nandwrite -p /dev/mtd$mtdn /tmp/secdata.ubi
				ubiattach /dev/ubi_ctrl -m $mtdn
			fi
		fi
	fi

echo "After DNI mount_root"
}

do_mount_root() {
	echo "Before mount_root"
	#mount_root
	#boot_run_hook preinit_mount_root
	do_dni_mount_root
	[ -f /sysupgrade.tgz ] && {
		echo "- config restore -"
		cd /
		tar xzf /sysupgrade.tgz
	}
	echo "After mount_root"
}

[ "$INITRAMFS" = "1" ] || boot_hook_add preinit_main do_mount_root
