1#!/bin/sh
2
3# Script for loading, unloading, etc. ppp modules.
4
5moddir=/usr/local/etc
6etcppp=/etc/ppp
7
8PATH=/usr/etc:/usr/bin
9
10# Check that we're superuser
11touch /tmp/su$$
12if chown root /tmp/su$$ >/dev/null; then :
13else
14    echo "$0: must be root."
15    rm -f /tmp/su$$
16    exit 1
17fi
18rm -f /tmp/su$$
19
20case "$0" in
21*ppp.INSTALL)
22    if [ ! -f ppp.INSTALL ]; then
23	echo "ppp.INSTALL: not found"
24	exit 1
25    fi
26    for n in INSTALL LOAD UNLOAD MKDEV RMDEV; do
27	if [ -h /dev/ppp.$n -o -f /dev/ppp.$n ]; then
28	    rm /dev/ppp.$n
29	fi
30    done
31    cp ppp.INSTALL /dev
32    for n in LOAD UNLOAD MKDEV RMDEV; do
33	ln -s ppp.INSTALL /dev/ppp.$n
34    done
35    ;;
36
37*ppp.LOAD)
38    if modstat | grep -w ppp >/dev/null; then
39	echo "ppp driver is already loaded."
40	exit 1
41    fi
42    if modstat | grep -w if_ppp >/dev/null; then
43	echo "if_ppp module already loaded: not reloading."
44    else
45	echo -n "if_ppp: "
46	modload $moddir/if_ppp_mod.o -sym -entry _if_ppp_vdcmd \
47	    -o $etcppp/if_ppp_mod
48    fi
49    echo -n "ppp: "
50    modload $moddir/ppp_mod.o -sym -entry _ppp_vdcmd -exec /dev/ppp.MKDEV \
51	-o $etcppp/ppp_mod
52    echo -n "ppp_comp: "
53    modload $moddir/ppp_comp_mod.o -sym -entry _ppp_comp_vdcmd \
54	-o $etcppp/ppp_comp
55    echo -n "ppp_ahdl: "
56    modload $moddir/ppp_ahdl_mod.o -sym -entry _ppp_ahdlc_vdcmd \
57	-o $etcppp/ppp_ahdl
58    exit 0
59    ;;
60
61*ppp.MKDEV)
62    # args: module number, type, b-major, c-major
63    if [ $# -ne 4 ]; then
64	echo "Usage: $0 module-id module-type b-major c-major"
65	exit 1
66    fi
67    if [ "$2" -ne "12345607" -a "$2" -ne "12345600" ]; then
68	echo "$0: $2: bad module type"
69	exit 1
70    fi
71    rm -f /dev/ppp
72    # we "just know" that 37 is the major number of the clone driver
73    mknod /dev/ppp c 37 $4
74    chmod 644 /dev/ppp
75    exit 0
76    ;;
77
78*ppp.UNLOAD)
79    stat=0
80    if modstat | grep -w if_ppp >/dev/null; then
81	echo "$0: not unloading if_ppp module."
82    fi
83    for mod in ppp ppp_comp ppp_ahdl; do
84	id=`modstat | grep -w $mod | awk '{print $1}'`
85	if [ x$id = x ]; then
86	    echo "$mod is not loaded."
87	    stat=1
88	else
89	    modunload -id $id
90	fi
91    done
92    exit $stat
93    ;;
94
95*ppp.RMDEV)
96    rm -f /dev/ppp
97    exit 0
98    ;;
99
100*)
101    echo "Invocation names: ppp.INSTALL ppp.LOAD ppp.UNLOAD ppp.MKDEV ppp.RMDEV"
102    exit 1
103    ;;
104esac
105