]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - etc/rc.d/pf
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / etc / rc.d / pf
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: pf
7 # REQUIRE: FILESYSTEMS netif pflog pfsync
8 # BEFORE:  routing
9 # KEYWORD: nojail
10
11 . /etc/rc.subr
12
13 name="pf"
14 rcvar=`set_rcvar`
15 load_rc_config $name
16 start_cmd="pf_start"
17 stop_cmd="pf_stop"
18 check_cmd="pf_check"
19 reload_cmd="pf_reload"
20 resync_cmd="pf_resync"
21 status_cmd="pf_status"
22 extra_commands="check reload resync status"
23 required_files="$pf_rules"
24 required_modules="pf"
25
26 pf_start()
27 {
28         echo "Enabling pf."
29         $pf_program -F all > /dev/null 2>&1
30         $pf_program -f "$pf_rules" $pf_flags
31         if ! $pf_program -s info | grep -q "Enabled" ; then
32                 $pf_program -e
33         fi
34 }
35
36 pf_stop()
37 {
38         if $pf_program -s info | grep -q "Enabled" ; then
39                 echo "Disabling pf."
40                 $pf_program -d
41         fi
42 }
43
44 pf_check()
45 {
46         echo "Checking pf rules."
47         $pf_program -n -f "$pf_rules"
48 }
49
50 pf_reload()
51 {
52         echo "Reloading pf rules."
53         $pf_program -n -f "$pf_rules" || return 1
54         # Flush everything but existing state entries that way when
55         # rules are read in, it doesn't break established connections.
56         $pf_program -Fnat -Fqueue -Frules -FSources -Finfo -FTables -Fosfp > /dev/null 2>&1
57         $pf_program -f "$pf_rules" $pf_flags
58 }
59
60 pf_resync()
61 {
62         $pf_program -f "$pf_rules" $pf_flags
63 }
64
65 pf_status()
66 {
67         $pf_program -s info
68 }
69
70 run_rc_command "$1"