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

### BEGIN INIT INFO
# Provides:            $pppoe
# 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 daemon.
# Description:         Start pppoe daemon
# X-LFS-Provided-By:   LFS
### END INIT INFO

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


# Paths to programs
PROG=pppd
CMD=/usr/sbin/$PROG
PEERS_DIR=/etc/ppp/peers/
PID_DIR=/run/ppp

topeers()

{
#$1 is the start stop command
if [ -d $PEERS_DIR ] ; then
  for config in `find $PEERS_DIR -maxdepth 1 -type f -name *.conf -print | sort $RVS -u`
    do
    name=`basename $config | cut -d'.' -f1`
    if [ -z "$name" ] ; then
      continue
      fi
    case "$1" in
      "start"	)
	 if [ -f $PID_DIR/ppp-$name.pid ] ; then
	   PPP_PID=`cat $PID_DIR/ppp-$name.pid | /usr/bin/head -1` 
	   /usr/bin/kill -0 $PPP_PID
	   if [ $? = 0 ] ; then
	     log_info_msg "PPP $name Link already up (pid=$PPP_PID)" 
    	     evaluate_retval
	     continue
	     else
	     rm -f $PID_DIR/ppp-$name.pid
	     fi
	   fi
    	 log_info_msg "Bringing UP $name PPP Link" 
    	 /usr/sbin/$PROG linkname $name call `basename $config` > /dev/null 2>&1
    	 RETVAL=$?
    	 evaluate_retval
	 ;;
      "stop"	)
	 if [ -f $PID_DIR/ppp-$name.pid ] ; then
    	   log_info_msg "Shutting Down $name PPP Link" 
	   /usr/bin/kill -TERM `cat $PID_DIR/ppp-$name.pid | /usr/bin/head -1`
    	   evaluate_retval
	   fi
	 ;;
      "status"	)
    	 log_info_msg "$name PPP Link check" 
	 if [ -f $PID_DIR/ppp-$name.pid ] ; then
	   /usr/bin/kill -0 `cat $PID_DIR/ppp-$name.pid | /usr/bin/head -1`
	   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
 	topeers $1	
        ;;

    stop)
 	topeers $1	
        ;;

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

    status)
 	topeers $1	
        ;;

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

