#!/bin/sh
#
# Copyright (c) 2003 by Maxim Heijndijk <cchq at wanadoo dot nl>
# for the Mandrake RPM of trickled.
#
# description:  Trickle is a lightweight userspace bandwidth shaper.
# chkconfig:    2345 65 35
# config:	/etc/trickled.conf
# config:	/etc/sysconfig/trickled
# processname:	trickled
# pidfile:	/var/run/trickled.pid

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

# Get service config
[ -f /etc/sysconfig/trickle ] && . /etc/sysconfig/trickle || NOSYSCONF="1"

[ "${SYSLOG}" = "yes" ] && SYSLOG="-s"
[ ! -z "${DLR}" ] && DLR="-d ${DLR}"
[ ! -z "${ULR}" ] && ULR="-u ${ULR}"
[ ! -z "${SMOOTHING_TIME}" ] && SMOOTHING_TIME="-t ${SMOOTHING_TIME}"
[ ! -z "${SMOOTHING_LENGTH}" ] && SMOOTHING_LENGTH="-l ${SMOOTHING_LENGTH}"
[ ! -z "${PRIORITY}" ] && PRIORITY="-p ${PRIORITY}"
[ ! -z "${TRICKLE_CONF}" ] && TRICKLE_CONF="-c ${TRICKLE_CONF}"
[ ! -z "${NOTIFY}" ] && NOTIFY="-N ${NOTIFY}"
[ ! -z "${PEAK_WINDOW}" ] && PEAK_WINDOW="-w ${PEAK_WINDOW}"

# See how we were called.
case "$1" in

  start)    # Check if the service is already running?
    	    if [ ! -f /var/lock/subsys/trickle ]; then

                gprintf "Starting Trickled bandwith shaper daemon: "

		if [ "${NOSYSCONF}" = "1" ]; then

		    gprintf "Configuration file \"/etc/sysconfig/trickle\" not found. Using default settings."
		    echo

		fi

                daemon trickled ${SYSLOG} \
				${DLR} \
				${ULR} \
				${SMOOTHING_TIME} \
				${SMOOTHING_LENGTH} \
				${PRIORITY} \
				${TRICKLE_CONF} \
				${NOTIFY} \
				${PEAK_WINDOW}

		RETVAL=$?
		[ ${RETVAL} -eq 0 ] && touch /var/lock/subsys/trickle

    	    else

                gprintf "Starting Trickled bandwith shaper daemon: "
		failure

    	    fi

	    echo
	    ;;

  stop)	    # Stop daemons.
    	    if [ -f /var/lock/subsys/trickle ]; then

		gprintf "Stopping Trickled bandwith shaper daemon: "
		killproc trickled
		rm -f /var/lock/subsys/trickle >/dev/null 2>&1
		echo

	    else

		gprintf "Stopping Trickled bandwith shaper daemon: "
		failure
		echo
                exit 1

    	    fi
	    ;;

  status)   status trickled
	    ;;

  restart|reload)  $0 stop
    		   $0 start
		   ;;

  *)	    gprintf "$0 {start|stop|status|restart|reload}\n"
    	    exit 1
	    ;;

esac

exit 0
