#!/bin/sh
#=================================================================
# Begin pppoe
#
# Description : Connect to PPPoE Provider
# chkconfig: 2345 54 24
#
#=================================================================

### BEGIN INIT INFO
# Provides:            $pppoe-server
# Required-Start:      $network
# Should-Start:
# Required-Stop:       sendsignals
# Should-Stop:
# Default-Start:       3 4 5
# Default-Stop:        0 1 2 6
# Short-Description:   Start pppoe-server daemon.
# Description:         Start pppoe-server daemon
# X-LFS-Provided-By:   LFS
### END INIT INFO

if [ -r /lib/lsb/init-functions ] ; then
  . /lib/lsb/init-functions
  fi


# Paths to programs
SERVER=pppoe-server
CMD=/usr/sbin/$SERVER
SERVER_DIR=/etc/ppp/servers/
PID_DIR=/run/ppp

setservers()

{
#$1 is the start stop command
if [ -d $SERVER_DIR ] ; then
  for server in `find $SERVER_DIR -maxdepth 1 -type f -name *.conf -print | sort $RVS -u`
    do
    name=`basename $server | cut -d'.' -f1`
    if [ -z "$name" ] ; then
      continue
      fi
    . $server
    case "$1" in
      "start"	)
	 if [ -f $PID_DIR/$SERVER.pid ] ; then
	   PPP_PID=`cat $PID_DIR/$SERVER.pid | /usr/bin/head -1` 
	   /usr/bin/kill -0 $PPP_PID > /dev/null
	   if [ $? = 0 ] ; then
	     log_info_msg "$SERVER daemon already up (pid=$PPP_PID)" 
    	     evaluate_retval
	     continue
	     else
	     rm -f $PID_DIR/$SERVER.pid
	     fi
	   fi
    	 log_info_msg "Bringing UP $SERVER daemon" 
	 $CMD						\
		-I $IFACE				\
		-C $CNAME				\
		-X $PID_DIR/$SERVER.pid			\
		-p $SERVER_DIR$name.ippool		\
		-g /usr/lib/rp-pppoe/rp-pppoe.so
    	 RETVAL=$?
    	 evaluate_retval
	;;
      "stop"	)
	 if [ -f $PID_DIR/$SERVER.pid ] ; then
    	   log_info_msg "Shutting Down $SERVER daemon" 
	   /usr/bin/kill -TERM `cat $PID_DIR/$SERVER.pid | /usr/bin/head -1`
    	   evaluate_retval
	   rm -f $PID_DIR/$SERVER.pid
	   fi
	;;
      "status"	)
    	 log_info_msg "$SERVER daemon check" 
	 if [ -f $PID_DIR/$SERVER.pid ] ; then
	   /usr/bin/kill -0 `cat $PID_DIR/$SERVER.pid | /usr/bin/head -1` > /dev/null
	   else
	   /usr/bin/false
	   fi
    	 evaluate_retval
	;;
      esac
    done
  fi
}

mkdir -p /run/ppp
case "$1" in
    start)
	if [ ! -c /dev/ppp ] ; then
	  mknod /dev/ppp c 108 0
	  fi
	setservers $1
        ;;

    stop)
	setservers $1
        ;;

    restart)
        $0 stop
        sleep 1
        $0 start
        ;;

    status)
	setservers $1
        ;;

    *)
        echo "Usage: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

