From: Carsten Schlote <[email protected]>

After switching to the mainstream ppp.make file, I found that the
pon/poff scripts are only stubs.

Updated these stubs to be the latest maintainer versions taken from
the ppp sources.

If required, you can use projectroot/usr/bin/{pon|poff} to
override these files with your own, which is usually not needed.

Signed-off-by: Carsten Schlote <[email protected]>
---
 generic/usr/bin/poff |  102 +++++++++++++++++++++++++++++++++++++++++++++++++-
 generic/usr/bin/pon  |   38 ++++++++++++++++++-
 2 files changed, 138 insertions(+), 2 deletions(-)

diff --git a/generic/usr/bin/poff b/generic/usr/bin/poff
index ec78f55..659bfa7 100755
--- a/generic/usr/bin/poff
+++ b/generic/usr/bin/poff
@@ -1,4 +1,104 @@
 #!/bin/sh
 
-echo "poff: implement me!"
+# $Id: poff,v 1.1 2002/11/24 23:30:44 etbe Exp $
+# Written by John Hasler <[email protected]> and based on work 
+# by Phil Hands <[email protected]>.  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.1 $_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
diff --git a/generic/usr/bin/pon b/generic/usr/bin/pon
index b17242a..ef47518 100755
--- a/generic/usr/bin/pon
+++ b/generic/usr/bin/pon
@@ -1,4 +1,40 @@
 #!/bin/sh
 
-echo "pon: implement me!"
+PPP_ON_BOOT=/etc/ppp/ppp_on_boot
 
+case "$1" in
+  -*) echo "
+Usage: pon [provider] [arguments]
+
+If pon is invoked without arguments, $PPP_ON_BOOT file will be
+run, presuming it exists and is executable. Otherwise, a PPP connection
+will be started using settings from /etc/ppp/peers/provider.
+If you specify one argument, a PPP connection will be started using
+settings from the appropriate file in the /etc/ppp/peers/ directory, and
+any additional arguments supplied will be passed as extra arguments to
+pppd.
+"
+      exit 0
+      ;;
+esac
+
+if [ -z "$1" -a -x "$PPP_ON_BOOT" ]; then
+  exec "$PPP_ON_BOOT"
+fi
+
+if [ -z "$1" -a ! -f /etc/ppp/peers/provider ]; then
+  echo "
+Please configure /etc/ppp/peers/provider or use a command line argument to
+use another file in /etc/ppp/peers/ directory.
+"
+  exit 1
+fi
+
+if [ "$1" -a ! -f "/etc/ppp/peers/$1" ]; then
+  echo "
+The file /etc/ppp/peers/$1 does not exist.
+"
+  exit 1
+fi
+
+exec /usr/sbin/pppd call ${@:-provider}
-- 
1.6.6.1


--
ptxdist mailing list
[email protected]

Reply via email to