#!/bin/sh

WITHOUT_RC_COMPAT=1

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

cd /etc/sysconfig/network-scripts
. network-functions

CONFIG="$1"
[ -f "$CONFIG" ] || CONFIG="ifcfg-$1"
source_config

try_to_kill()
{
	local n="$1"
	shift
	local p="$1"

	local i=0
	while [ $i -lt "$n" ]; do
		[ ! -d "/proc/$p" ] && return 0
		kill -TERM "$p"
		[ ! -d "/proc/$p" ] && return 0
		sleep 1
		i=$[1+i]
	done
	[ ! -d "/proc/$p" ] && return 0 || return 1
}

try_to_wait()
{
	local n="$1"
	shift
	local p="$1"

	local i=0
	while [ $i -lt "$n" ]; do
		[ ! -d "/proc/$p" ] && return 0
		sleep 1
		i=$[1+i]
	done
	return 1
}

if is_yes "$DEMAND" && [ -s "/var/run/ppp-$DEVICE.pid" ]; then
	PID=`head -1 "/var/run/ppp-$DEVICE.pid"`
	try_to_kill 4 "$PID"
	exit
fi

file="/var/run/pppwatch-$DEVICE.pid"

if [ ! -f "$file" ]; then
    # ppp isn't running, or we didn't start it
    exit 0
fi

PID="$(cat "$file")"
[ -n "$PID" ] || exit 1

kill -TERM "$PID" >/dev/null 2>&1
try_to_wait 10 "$PID" && exit

# killing ppp-watch twice in a row causes it to send a SIGKILL to pppd pgrp
kill -TERM "$PID" >/dev/null 2>&1

# ip-down won't run in this case
/etc/sysconfig/network-scripts/ifdown-post "$1"

[ ! -d "/proc/$PID" ]
