#!/bin/bash PATH=/sbin:/usr/sbin:/bin:/usr/bin cd /etc/sysconfig/network-scripts . network-functions CONFIG=$1 source_config if [ ! -f /var/run/ppp-$DEVICE.pid ]; then # ppp isn't running, or we didn't start it exit 0 fi file=/var/run/ppp-$DEVICE.pid # signals ifup-ppp not to persist -- must do this before exiting if PPP # has not yet started ($file does not exist). rm -f /var/run/ppp-$DEVICE.dev if [ ! -f $file ]; then exit 0 fi PID=`head -1 $file` if [ -z "$PID" ]; then exit 1 fi # pppd might have chat/wvdial as a child; remember its pid to kill after pppd. # (After, not before, so that pppd doesn't just restart it). CHATPID=`ps axl | awk '$4 ~ /^'"$PID"'$/ {print $3}' 2>/dev/null` kill $PID > /dev/null 2>&1 [ -n "$CHATPID" ] && kill $CHATPID > /dev/null 2>&1 if [ ! -d /proc/$PID ]; then exit 0 fi sleep 2 if [ ! -d /proc/$PID ]; then exit 0 fi kill -KILL $PID > /dev/null 2>&1 if [ -d /proc/$PID ]; then logger -p daemon.info -t ifdown-ppp "ifdown-ppp unable to kill pppd-$DEVICE" & else # ip-down won't run in this case /etc/sysconfig/network-scripts/ifdown-post $1 fi exit 1