blob: 84d6bc47d783ae84a77228e32e693f9c615e06c3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: ppp
# REQUIRE: netif
# KEYWORD: nojail
. /etc/rc.subr
name="ppp"
rcvar=`set_rcvar`
command="/usr/sbin/${name}"
start_cmd="ppp_start"
stop_cmd="ppp_stop"
start_postcmd="ppp_poststart"
ppp_start_profile()
{
local _ppp_profile _ppp_mode _ppp_nat _ppp_unit
local _ppp_profile_cleaned _punct _punct_c
_ppp_profile=$1
_ppp_profile_cleaned=$1
_punct=". - / +"
for _punct_c in $_punct; do
_ppp_profile_cleaned=`ltr ${_ppp_profile_cleaned} ${_punct_c} '_'`
done
# Check for ppp profile mode override.
#
eval _ppp_mode=\$ppp_${_ppp_profile_cleaned}_mode
if [ -z "$_ppp_mode" ]; then
_ppp_mode=$ppp_mode
fi
# Check for ppp profile nat override.
#
eval _ppp_nat=\$ppp_${_ppp_profile_cleaned}_nat
if [ -z "$_ppp_nat" ]; then
_ppp_nat=$ppp_nat
fi
# Establish ppp mode.
#
if [ "${_ppp_mode}" != "ddial" -a "${_ppp_mode}" != "direct" \
-a "${_ppp_mode}" != "dedicated" \
-a "${_ppp_mode}" != "background" ]; then
_ppp_mode="auto"
fi
rc_flags="-quiet -${_ppp_mode}"
# Switch on NAT mode?
#
case ${_ppp_nat} in
[Yy][Ee][Ss])
rc_flags="$rc_flags -nat"
;;
esac
# Check for hard wired unit
eval _ppp_unit=\$ppp_${_ppp_profile_cleaned}_unit
if [ -n "${_ppp_unit}" ]; then
_ppp_unit="-unit${_ppp_unit}"
fi
rc_flags="$rc_flags $_ppp_unit"
# Run!
#
su -m $ppp_user -c "$command ${rc_flags} ${_ppp_profile}"
}
ppp_start()
{
local _ppp_profile _p
_ppp_profile=$*
if [ -z "${_ppp_profile}" ]; then
_ppp_profile=$ppp_profile
fi
echo -n "Starting PPP profile:"
for _p in $_ppp_profile; do
echo -n " $_p"
ppp_start_profile $_p
done
echo "."
}
ppp_poststart()
{
# Re-Sync ipfilter and pf so they pick up any new network interfaces
#
if [ -f /etc/rc.d/ipfilter ]; then
/etc/rc.d/ipfilter quietresync
fi
if [ -f /etc/rc.d/pf ]; then
/etc/rc.d/pf quietresync
fi
}
ppp_stop_profile() {
local _ppp_profile
_ppp_profile=$1
/bin/pkill -f "^${command}.*[[:space:]]${_ppp_profile}\$" || \
echo -n "(not running)"
}
ppp_stop() {
local _ppp_profile _p
_ppp_profile=$*
if [ -z "${_ppp_profile}" ]; then
_ppp_profile=$ppp_profile
fi
echo -n "Stopping PPP profile:"
for _p in $_ppp_profile; do
echo -n " $_p"
ppp_stop_profile $_p
done
echo "."
}
load_rc_config $name
run_rc_command $*
|