xref: /titanic_51/usr/src/cmd/cmd-inet/etc/init.d/pppd (revision 88447a05f537aabe9a1bc3d5313f22581ec992a7)
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
27PATH=/sbin:/usr/bin:/usr/sbin; export PATH
28PPPDIR=/etc/ppp; export PPPDIR
29
30case "$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; do
47			if [ "$intf" ]; then
48				/usr/sbin/sppptun plumb pppoe $intf
49				/usr/sbin/sppptun plumb pppoed $intf
50			fi
51		done
52	fi
53	if [ -f $PPPDIR/pppoe ] && [ -x /usr/lib/inet/pppoed ]; then
54		/usr/lib/inet/pppoed >/dev/null
55	fi
56       	;;
57
58'stop')
59	/usr/bin/pkill -z `/sbin/zonename` -x pppd && sleep 1
60	/usr/bin/pkill -z `/sbin/zonename` -x pppoed
61
62	# Use ifconfig to make the interfaces down just in case
63	if [ -f $PPPDIR/ifconfig ]; then
64        	nawk '/ifconfig[	]*sppp/ { \
65			system("ifconfig " $2 " down"); \
66			system("ifconfig " $2 " unplumb"); \
67			next; \
68		} \
69        	/ifconfig/ { \
70			$3 = "removeif"; \
71			NF = 4; \
72			system($0); \
73		}' < $PPPDIR/ifconfig
74	fi
75
76	if [ -f $PPPDIR/pppoe.if ] && [ -x /usr/sbin/sppptun ]; then
77		sed -e 's/^#.*//;s/\([^\\]\)#.*/\1/;s/[	 ]*$//;s/^[	]*//' \
78		    $PPPDIR/pppoe.if | \
79		while read intf; do
80			if [ "$intf" ]; then
81				/usr/sbin/sppptun unplumb ${intf}:pppoe
82				/usr/sbin/sppptun unplumb ${intf}:pppoed
83			fi
84		done
85	fi
86       	;;
87
88*)
89        echo "Usage: $0 { start | stop }"
90        exit 1
91        ;;
92esac
93exit 0
94