#!/bin/sh
#
# chilli      CoovaChilli init
#
# chkconfig: 2345 65 35
# description: CoovaChilli

# Source function library.

daemon=
killproc=killall

[ -e /etc/rc.d/init.d/functions ] && {
    . /etc/rc.d/init.d/functions
    daemon=daemon
    killproc=killproc
}

[ -e /etc/sysconfig/network ] && {
    . /etc/sysconfig/network
    [ ${NETWORKING} = "no" ] && exit 0
}

[ -f /usr/sbin/chilli ] || exit 0
[ -f /etc/chilli.conf ] || exit 0

. /etc/chilli/functions

check_required

RETVAL=0
prog="chilli"

case $1 in
    start)
        gprintf "Starting %s: " "$prog"
        /sbin/modprobe tun >/dev/null 2>&1
        echo 1 > /proc/sys/net/ipv4/ip_forward

	[ -e /dev/net/tun ] || {
	    (cd /dev; 
		mkdir net; 
		cd net; 
		mknod tun c 10 200)
	}

	writeconfig
        radiusconfig
	
        (crontab -l 2>&- | grep -v $0
            test ${HS_ADMINTERVAL:-0} -gt 0 && gprintf "*/%s * * * * %s radconfig\n" "$HS_ADMINTERVAL" "$0"
            gprintf "*/10 * * * * %s checkrunning\n" "$0"
#           gprintf "*/2  * * * * %s arping\n" "$0"
        ) | crontab - 2>&-
	
	ifconfig $HS_LANIF 0.0.0.0
        $daemon /usr/sbin/chilli &
        echo
	;;
    
    checkrunning)
	[ -e $LKFILE -a ! -e $PIDFILE ] && $0 start
	;;

    radconfig)
	[ -e $MAIN_CONF ] || writeconfig
	radiusconfig
	;;

    reload)
	killall -HUP chilli
	;;

    restart)
	$0 stop
	$0 start
	RETVAL=$?
	;;
    
    stop)
        gprintf "Shutting down %s: " "$prog"

	crontab -l 2>&- | grep -v $0 | crontab -

        [ -f /var/run/chilli.pid ] && { 
	    kill $(cat /var/run/chilli.pid)
	    RETVAL=$
	    [ $RETVAL = 0 ] && {
		rm -f /var/run/chilli.pid 2>/dev/null
	    }
	}
	$killproc chilli
        echo
	;;
    
    *)
        gprintf "Usage: %s {start|stop|restart|reload|radconfig}\n" "$0"
        exit 1
esac

exit $?
