#!/bin/bash
#
# VERSION=4
# CHANGES="only use hardware.conf to assist when set in beroconf"

# global variables #
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/fallback
umask 077

# functions #
function log () {
	echo "[init_coremodules] ${1}"
}

function module_load () {
	if [ ! -z "$(lsmod | grep ${1})" ]; then
		log "Module '${1}' already loaded, leaving."
		return
	fi

	log "Loading module '${1}'."
	/sbin/insmod /lib/modules/${1}.ko ${2} > /dev/null
}

function module_unload () {
	log "Unloading module '${1}'."
	/sbin/rmmod /lib/modules/${1}.ko > /dev/null
}

# main #
firmware_update_boot=$(/usr/fallback/beroconf get root boot_fwupdate | grep -v failed)
if [ "${firmware_update_boot}" = "1" ];then
	berofix_driver_params="no_detection=1"
fi

if [ -z "$(grep "quiet" /proc/cmdline)" ]; then
	berofix_driver_params="${berofix_driver_params} debug=1"
fi

# get lifs from hardware.conf if ignore_hw_conf is set
#ignore_hw_conf=$(/usr/fallback/beroconf get root ignore_hw_conf | grep -v failed)
#if [ "${ignore_hw_conf}" != "1" ]; then
#	lifs=$(grep "type" /usr/conf/hardware.conf | grep -v interface_type | cut -d "=" -f2)
#	lifs=$(echo $lifs | sed "s/ /,/g")
#
#	berofix_driver_params="${berofix_driver_params} lifs=${lifs}"
#fi

case "${1}" in
	start)
		# load core-modules
		module_load berofix-driver ${berofix_driver_params}
		module_load csmencaps

		# start eth1 for csmencaps
		/sbin/ifup eth1

		# display firmware-update-boot
		if [ "${firmware_update_boot}" = "1" ];then
			echo 2 > /sys/class/beronet/gateway/led_program
		fi
		;;
	stop)
		# stop eth1
		/sbin/ifdown eth1

		# unload core-modules
		module_unload csmencaps
		module_unload berofix-driver
		;;
	restart)
		${0} stop
		${1} start
		;;
	*)
		echo "Usage: ${0} {start|stop|restart}" >&2
		exit 1
esac

exit 0
