Line 0
Link Here
|
|
|
1 |
#!/bin/sh |
2 |
# |
3 |
# $FreeBSD$ |
4 |
# |
5 |
|
6 |
# PROVIDE: tcpmss |
7 |
# BEFORE: ipfw |
8 |
# REQUIRE: netif |
9 |
# KEYWORD: nojail |
10 |
|
11 |
. /etc/rc.subr |
12 |
|
13 |
name="tcpmss" |
14 |
rcvar="${name}_enable" |
15 |
start_cmd="${name}_start" |
16 |
start_precmd="${name}_prestart" |
17 |
stop_cmd="${name}_stop" |
18 |
|
19 |
tcpmss_prestart() { |
20 |
[ -n "$1" ] && tcpmss_instances="$1" |
21 |
[ -z "$tcpmss_instances" ] && return 1 |
22 |
required_modules="netgraph ng_ipfw ng_tcpmss" |
23 |
} |
24 |
|
25 |
tcpmss_start() |
26 |
{ |
27 |
local _i _m _v |
28 |
|
29 |
[ -n "$1" ] && tcpmss_instances="$1" |
30 |
checkyesno tcpmss_verbose && _v=yes |
31 |
|
32 |
rc=0 |
33 |
for _i in $tcpmss_instances |
34 |
do |
35 |
# get value of tcpmss_NAME="1452" |
36 |
eval _m=\"\$tcpmss_${_i}\" |
37 |
if [ -z "$_m" ]; then |
38 |
echo "Warning: variable tcpmss_$_i not defined" >&2 |
39 |
continue |
40 |
fi |
41 |
[ -n "$_v" ] && echo -n "Setup ng_tcpmss instance $_i: mss=$_m" |
42 |
ngctl mkpeer ipfw: tcpmss $_i mss_$_m && ngctl msg ipfw:$_i config \ |
43 |
'{ inHook="'mss_$_m'" outHook="'mss_$_m'" maxMSS='$_i' }' && \ |
44 |
ngctl name ipfw:$_i mss_$_i |
45 |
rc=$(($rc + $?)) |
46 |
|
47 |
[ -n "$_v" ] && echo . |
48 |
done |
49 |
|
50 |
return $rc |
51 |
} |
52 |
|
53 |
tcpmss_stop() |
54 |
{ |
55 |
local _i _v |
56 |
|
57 |
[ -n "$1" ] && tcpmss_instances="$1" |
58 |
checkyesno tcpmss_verbose && _v=yes |
59 |
|
60 |
rc=0 |
61 |
for _i in $tcpmss_instances |
62 |
do |
63 |
[ -n "$_v" ] && echo -n "Shutdown ng_tcpmss instance $_i" |
64 |
ngctl shutdown mss_${_i}: |
65 |
rc=$(($rc + $?)) |
66 |
[ -n "$_v" ] && echo . |
67 |
done |
68 |
|
69 |
return $rc |
70 |
|
71 |
kldunload ng_ipfw ng_tcpmss netgraph |
72 |
} |
73 |
|
74 |
load_rc_config $name |
75 |
run_rc_command "$@" |