#!/bin/sh
# laptop-net    This shell script takes care of starting and stopping
#               laptop-net.
#
# chkconfig: - 11 89 
# description: automatically adapt laptop ethernet 
# processname: laptop-net
# config: /etc/laptop-net/
# pidfile: /var/run/laptop-net.pid

# Copyright (c) 2000-2002 Massachusetts Institute of Technology

# Modified for Momonga Linux
# by OZAWA -Crouton- Sakuro <crouton@momonga-linux.org>

# Source function library.
. /etc/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Source laptop-net common stuff.
. /usr/share/laptop-net/shared.sh

IFD="/usr/sbin/ifd"
LINK_CHANGE="/usr/share/laptop-net/link-change"

[ -x "${IFD}" ] || exit 0
[ -x "${LINK_CHANGE}" ] || exit 0
[ -x "${LINKUP}" ] || exit 0

if [ "${MII_SUPPORTED}" = "yes" ]; then
    IFD_WATCHED="${INTERFACE}"
else
    IFD_WATCHED=""
fi

usage ()
{
    echo "Usage: $0 {start|stop|restart|force-reload|suspend|resume|scheme|profile}"
    exit 1
}

case "${1}" in
    "start")
	[ $# -eq 1 ] || usage
	[ -f "${LOCK_FILE}" ] || touch "${LOCK_FILE}"
	echo "up" > "${TARGET_FILE}"
	daemon $IFD "${LINK_CHANGE}" "${IFD_WATCHED}"
	load_module
	;;
    "stop")
	[ $# -eq 1 ] || usage
	echo "down" > "${TARGET_FILE}"
	killproc $IFD
	bringdown stop
	unload_module
	;;
    "restart"|"force-reload")
	[ $# -eq 1 ] || usage
	$0 stop
	$0 start
	;;
    "suspend")
	[ $# -eq 1 ] || usage
	cp -p "${STATE_FILE}" "${RESUME_FILE}"
	if kernel_supports_power_management; then
	    :
	else
	    bringdown suspend
	    unload_module
	fi
	;;
    "resume")
	[ $# -eq 1 ] || usage
	if [ -f "${RESUME_FILE}" ]; then
	    RESUME_STATE="$(cat "${RESUME_FILE}")"
	    rm -f "${RESUME_FILE}"
	    if kernel_supports_power_management; then
		choose_scheme
		maybe_restart_dhcp
	    elif [ -n "${MODULE_NAME}" ] \
		 && [ -z "$(cat /proc/modules | grep "^${MODULE_NAME} ")" ]
	    then
		load_module
	    fi
	fi
	;;
    "scheme")
	if [ $# -eq 2 ]; then
	    OLD_SCHEME="$(cat "${SCHEME_FILE}")"
	    NEW_SCHEME="${2}"
	    if [ "${OLD_SCHEME}" != "${NEW_SCHEME}" ]; then
		echo "Changing scheme from ${OLD_SCHEME} to ${NEW_SCHEME}"
		bringdown newscheme
		write_scheme "${NEW_SCHEME}" "user"
		if "${LINKUP}" "${INTERFACE}"; then
		    bringup newscheme
		fi
	    else
		write_scheme "${NEW_SCHEME}" "user"
	    fi
	else
	    [ $# -eq 1 ] || usage
	    cat "${SCHEME_FILE}"
	fi
	;;
    "profile")
	[ $# -eq 1 ] || usage
	cat "${PROFILE_FILE}"
	;;
    *)
	usage
	;;
esac

exit 0
