diff options
author | Chuck Brewer <killian@gentoo.org> | 2003-04-24 08:18:43 +0000 |
---|---|---|
committer | Chuck Brewer <killian@gentoo.org> | 2003-04-24 08:18:43 +0000 |
commit | 3cce03b7c15ea25581524644c982b721bfa6a264 (patch) | |
tree | bb89c4533361b31910c176e3fc9a31cd3c43e0e5 /net-dialup | |
parent | *** empty log message *** (diff) | |
download | historical-3cce03b7c15ea25581524644c982b721bfa6a264.tar.gz historical-3cce03b7c15ea25581524644c982b721bfa6a264.tar.bz2 historical-3cce03b7c15ea25581524644c982b721bfa6a264.zip |
*** empty log message ***
Diffstat (limited to 'net-dialup')
-rw-r--r-- | net-dialup/ppp/files/poff | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/net-dialup/ppp/files/poff b/net-dialup/ppp/files/poff new file mode 100644 index 000000000000..6ede0b2cfcd1 --- /dev/null +++ b/net-dialup/ppp/files/poff @@ -0,0 +1,104 @@ +#!/bin/sh + +# $Id: poff,v 1.7 2003/04/24 08:18:43 killian Exp $ +# Written by John Hasler <john@dhh.gt.org> and based on work +# by Phil Hands <phil@hands.com>. Distributed under the GNU GPL + +if [ -x /usr/bin/kill ]; then + KILL="/usr/bin/kill" +else + KILL="/bin/kill" +fi +SIG=TERM +DONE="stopped" +MODE="" + +usage () +{ + cat <<!EOF! +usage: $0 [option] [provider] +options: + -r Cause pppd to drop the line and redial. + -d Toggle the state of pppd's debug option. + -c Cause pppd to renegotiate compression. + -a Stop all pppd's. 'provider' will be ignored. + -h Print this help summary and exit. + -v Print version and exit. + none Stop pppd. + +Options may not be combined. + +If 'provider' is omitted pppd will be stopped or signalled if and only if +there is exactly one running unless the '-a' option was given. If +'provider' is supplied the pppd controlling the connection to that +provider will be stopped or signalled. +!EOF! +} + +# Get option. If there are none replace the "?" that getopts puts in +# FLAG on error with "null". +getopts rdcavh FLAG +if [ "$?" -ne 0 ]; then + FLAG="null" +fi + +# Check for additional options. Should be none. +getopts :rdcavh DUMMY +if [ "$?" -eq 0 ]; then + echo "$0: Illegal option -- ${OPTARG}." + exit 1 +fi + +case $FLAG in + "r") SIG=HUP; DONE=signalled; shift ;; + "d") SIG=USR1; DONE=signalled; shift ;; + "c") SIG=USR2; DONE=signalled; shift ;; + "a") MODE="all"; shift ;; + "v") echo "$0$Revision: 1.7 $_TrickToPrint_RCS_Revision"; exit 0 ;; + "h") usage; exit 0 ;; + "?") exit 1; +esac + +# Get the PIDs of all the pppds running. Could also get these from +# /var/run, but pppd doesn't create .pid files until ppp is up. +PIDS=`pidof pppd` + +# poff is pointless if pppd isn't running. +if test -z "$PIDS"; then + echo "$0: No pppd is running. None ${DONE}." + exit 1 +fi + +# Find out how many pppd's are running. +N=`echo "$PIDS" | wc -w` + +# If there are no arguments we can't do anything if there is more than one +# pppd running. +if test "$#" -eq 0 -a "$N" -gt 1 -a $FLAG != "a" ; then + echo "$0: More than one pppd running and no "-a" option and +no arguments supplied. Nothing ${DONE}." + exit 1 +fi + +# If either there are no arguments or '-a' was specified kill all the +# pppd's. +if test "$#" -eq 0 -o "$MODE" = "all" ; then + $KILL -$SIG $PIDS || { + echo "$0: $KILL failed. None ${DONE}." + exit 1 + } + exit 0 +fi + +# There is an argument, so kill the pppd started on that provider. +PID=`ps axw | grep "[ /]pppd call $1 *\$" | awk '{print $1}'` +if test -n "$PID" ; then + $KILL -$SIG $PID || { + echo "$0: $KILL failed. None ${DONE}." + exit 1 + } +else + echo "$0: I could not find a pppd process for provider '$1'. None ${DONE}." + exit 1 +fi +exit 0 |