#!/bin/bash
#
# VERSION=3
# CHANGES="berofix-driver now"

# 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

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
