#!/bin/sh
#
#    kernel_module:  Loads/unloads kernel modules
#
#    Copyright (C) 2011 Canonical Ltd.
#
#    Authors: Bryce Harrington <bryce@canonoical.com>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

RUNDIR="/var/run/powernap"
MODULES="${RUNDIR}/modules"

unload_module() {
    module_name=$1
    lsmod | grep "^$module_name " >/dev/null
    if [ $? != 1 ]; then
        rmmod ${module_name}
        mkdir -p ${MODULES}
        echo 'UNLOADED' > ${MODULES}/${module_name}
    fi
}

reload_module() {
    module_name=$1
    lsmod | grep "^${module_name} " >/dev/null
    if  [ $? = 1 ] && \
        [ -e ${MODULES}/${module_name} ]; then
        modprobe ${module_name}
        echo 'LOADED' > ${MODULES}/${module_name}
    fi
}

help() {
    echo "Usage: $0 <true|false> <module>"
    echo "Ensure given kernel module is [not] loaded"
}

case $1 in
	true)
		unload_module $2 ;;
	false)
		reload_module $2 ;;
	help)
		help ;;
	*)
		exit $NA ;;
esac
