#!/bin/sh
# Module: vyatta-ppp
# 
# **** License ****
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
# 
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
# 
# This code was originally developed by Vyatta, Inc.
# Portions created by Vyatta are Copyright (C) 2006, 2007 Vyatta, Inc.
# All Rights Reserved.
# 
# Author: Rick Balocca
# Date: 2006
# Description:
# 
# **** End License ****

### BEGIN INIT INFO
# Provides:          vyatta-ppp
# Required-Start:    $local_fs
# Required-Stop:
# Default-Start:     S
# Default-Stop:	     0 6
# Short-Description: Start stop PPP services
### END INIT INFO

[ x"/etc/ppp/peers/wan*" = x ] && exit 0

ACTION=$1
WANPIPE=$2

if [ "${WANPIPE}" ]
then
	WANPIPE_INDEX=`expr ${WANPIPE} - 1`.1
else
	WANPIPE_INDEX=
fi

#LOG_FILE=/tmp/vyatta-ppp-start.log
LOG_FILE=/dev/null
#PPPD_LOG_FILE=/var/log/wan${WANPIPE_INDEX}.log
PPPD_LOG_FILE=/dev/null
PPP_INTERFACE_FILE=wan${WANPIPE_INDEX}
PPP_OFFSETS_DIR=/tmp/.offsets/ppp/
PPP_OFFSETS_FILE_WAN=${PPP_OFFSETS_DIR}wan${WANPIPE_INDEX}

start()
{
        # grep -q 'VYATTA version' /etc/ppp/options ||
        # cp /usr/share/vyatta-ppp/* /etc/ppp/.

	if [ "${WANPIPE}" ]
	then
		echo "`date`: Starting pppd">>${LOG_FILE}
		rm -rf ${PPP_OFFSETS_FILE_WAN} 2>>/dev/null
		/sbin/pon ${PPP_INTERFACE_FILE}</dev/null >>${PPPD_LOG_FILE}  2>&1 &
	else
		echo "`date`: Starting ALL pppd ... ">>${LOG_FILE}
		rm -rf ${PPP_OFFSETS_DIR}* 2>>/dev/null
		/sbin/pallon >>${LOG_FILE} 2>&1
		echo "`date`: Starting ALL pppd done">>${LOG_FILE}
	fi
}

stop()
{
	if [ "${WANPIPE}" ]
	then
		echo "`date`: Stopping pppd for ${WANPIPE}..." >> ${LOG_FILE}

		# poff doesn't do a very good job of killing the 
	        # instances of "pon" that might be running in background
	        # trying to re-connect this interface.  So we must do the
	        # job for him.
		PON_PIDS=` ps -C pon -f | grep ${PPP_INTERFACE_FILE} | awk '{print $2}'`
		if [ -n "$PON_PIDS" ]; then
                    echo "killing pon pids: $PON_PIDS" >> ${LOG_FILE}
                    for PID in $PON_PIDS ; do
			kill -HUP $PID >> ${LOG_FILE} 2>&1
                    done
		fi

		/sbin/poff ${PPP_INTERFACE_FILE}
		rm -rf ${PPP_OFFSETS_FILE_WAN} 2>>/dev/null
	else
		echo "`date`: Stopping all pppd processes..." >> ${LOG_FILE}

		PON_PIDS=` ps -C pon -f | grep pon | awk '{print $2}'`
                if [ -n "$PON_PIDS" ]; then
                    echo "killing pon pids: $PON_PIDS" >> ${LOG_FILE}
                    for PID in $PON_PIDS ; do
                        kill -HUP $PID >> ${LOG_FILE} 2>&1
                    done
                fi

		/sbin/poff -a 
		rm -rf ${PPP_OFFSETS_DIR}* 2>>/dev/null
	fi
	echo "`date`: Stopping pppd done">>${LOG_FILE}
}

case "$ACTION" in
	start)
		start
		;;
	stop)
		stop
		;;
	restart)
		stop
		start
		;;
	*)
		echo "usage: $0 {start|stop|restart}"
		exit 1
		;;
esac

exit 0
