1 #!/sbin/sh 2 # 3 # CDDL HEADER START 4 # 5 # The contents of this file are subject to the terms of the 6 # Common Development and Distribution License (the "License"). 7 # You may not use this file except in compliance with the License. 8 # 9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 # or http://www.opensolaris.org/os/licensing. 11 # See the License for the specific language governing permissions 12 # and limitations under the License. 13 # 14 # When distributing Covered Code, include this CDDL HEADER in each 15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 # If applicable, add the following below this CDDL HEADER, with the 17 # fields enclosed by brackets "[]" replaced with your own identifying 18 # information: Portions Copyright [yyyy] [name of copyright owner] 19 # 20 # CDDL HEADER END 21 # 22 # 23 # Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24 # Use is subject to license terms. 25 # 26 27 PATH=/sbin:/usr/bin:/usr/sbin; export PATH 28 PPPDIR=/etc/ppp; export PPPDIR 29 30 case "$1" in 31 'start') 32 if [ ! -x /usr/bin/pppd -o ! -c /dev/sppp ]; then 33 echo "$0: Solaris PPP has not been correctly installed on" 34 echo "$0: this system. Required files are missing." 35 exit 1 36 fi 37 if [ -f $PPPDIR/ifconfig ]; then 38 . $PPPDIR/ifconfig 39 fi 40 if [ -f $PPPDIR/demand ]; then 41 . $PPPDIR/demand 42 fi 43 if [ -f $PPPDIR/pppoe.if ] && [ -x /usr/sbin/sppptun ]; then 44 sed -e 's/^#.*//;s/\([^\\]\)#.*/\1/;s/[ ]*$//;s/^[ ]*//' \ 45 $PPPDIR/pppoe.if | \ 46 while read intf saps sapd; do 47 if [ "$intf" ]; then 48 [ -z "$saps" ] || saps="-s $saps" 49 /usr/sbin/sppptun plumb $saps pppoe $intf 50 [ -z "$sapd" ] || sapd="-s $sapd" 51 /usr/sbin/sppptun plumb $sapd pppoed $intf 52 fi 53 done 54 fi 55 if [ -f $PPPDIR/pppoe ] && [ -x /usr/lib/inet/pppoed ]; then 56 /usr/lib/inet/pppoed >/dev/null 57 fi 58 ;; 59 60 'stop') 61 /usr/bin/pkill -z `/sbin/zonename` -x pppd && sleep 1 62 /usr/bin/pkill -z `/sbin/zonename` -x pppoed 63 64 # Use ifconfig to make the interfaces down just in case 65 if [ -f $PPPDIR/ifconfig ]; then 66 nawk '/ifconfig[ ]*sppp/ { \ 67 system("ifconfig " $2 " down"); \ 68 system("ifconfig " $2 " unplumb"); \ 69 next; \ 70 } \ 71 /ifconfig/ { \ 72 $3 = "removeif"; \ 73 NF = 4; \ 74 system($0); \ 75 }' < $PPPDIR/ifconfig 76 fi 77 78 if [ -f $PPPDIR/pppoe.if ] && [ -x /usr/sbin/sppptun ]; then 79 sed -e 's/^#.*//;s/\([^\\]\)#.*/\1/;s/[ ]*$//;s/^[ ]*//' \ 80 $PPPDIR/pppoe.if | \ 81 while read intf rest; do 82 if [ "$intf" ]; then 83 /usr/sbin/sppptun unplumb ${intf}:pppoe 84 /usr/sbin/sppptun unplumb ${intf}:pppoed 85 fi 86 done 87 fi 88 ;; 89 90 *) 91 echo "Usage: $0 { start | stop }" 92 exit 1 93 ;; 94 esac 95 exit 0