3 # $NetBSD: ipfilter,v 1.10 2001/02/28 17:03:50 lukem Exp $
4 # $FreeBSD: src/etc/rc.d/ipfilter,v 1.10 2003/04/30 02:54:17 mtm Exp $
5 # $DragonFly: src/etc/rc.d/ipfilter,v 1.1 2003/07/24 06:35:37 dillon Exp $
9 # REQUIRE: root beforenetlkm mountcritlocal tty ipmon
11 # KEYWORD: DragonFly FreeBSD NetBSD
21 stop_precmd="test -f ${ipfilter_rules} -o -f ${ipv6_ipfilter_rules}"
25 stop_precmd="test -f ${ipfilter_rules} -o -f ${ipv6_ipfilter_rules}"
28 stop_precmd="test -f /etc/ipf.conf -o -f /etc/ipf6.conf"
32 start_precmd="ipfilter_prestart"
33 start_cmd="ipfilter_start"
34 stop_cmd="ipfilter_stop"
35 reload_precmd="$stop_precmd"
36 reload_cmd="ipfilter_reload"
37 resync_precmd="$stop_precmd"
38 resync_cmd="ipfilter_resync"
39 status_precmd="$stop_precmd"
40 status_cmd="ipfilter_status"
41 extra_commands="reload resync status"
47 # load ipfilter kernel module if needed
48 if ! sysctl net.inet.ipf.fr_pass > /dev/null 2>&1; then
50 info 'IP-filter module loaded.'
52 err 1 'IP-filter module failed to load.'
55 # check for ipfilter rules
56 if [ ! -r "${ipfilter_rules}" ] && [ ! -r "${ipv6_ipfilter_rules}" ]
58 warn 'IP-filter: NO IPF RULES'
64 # load ipfilter kernel module if needed
65 if ! sysctl net.inet.ipf.fr_pass > /dev/null 2>&1; then
67 info 'IP-filter module loaded.'
69 err 1 'IP-filter module failed to load.'
73 # check for ipfilter rules
74 if [ ! -r "${ipfilter_rules}" ] && [ ! -r "${ipv6_ipfilter_rules}" ]
76 warn 'IP-filter: NO IPF RULES'
81 if [ ! -f /etc/ipf.conf ] && [ ! -f /etc/ipf6.conf ]; then
82 warn "/etc/ipf*.conf not readable; ipfilter start aborted."
84 # If booting directly to multiuser, send SIGTERM to
85 # the parent (/etc/rc) to abort the boot
87 if [ "$autoboot" = yes ]; then
88 echo "ERROR: ABORTING BOOT (sending SIGTERM to parent)!"
101 echo "Enabling ipfilter."
104 ${ipfilter_program:-/sbin/ipf} -EFa
105 if [ -r "${ipfilter_rules}" ]; then
106 ${ipfilter_program:-/sbin/ipf} \
107 -f "${ipfilter_rules}" ${ipfilter_flags}
109 ${ipfilter_program:-/sbin/ipf} -6 -EFa
110 if [ -r "${ipv6_ipfilter_rules}" ]; then
111 ${ipfilter_program:-/sbin/ipf} -6 \
112 -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
117 ${ipfilter_program:-/sbin/ipf} -EFa
118 if [ -r "${ipfilter_rules}" ]; then
119 ${ipfilter_program:-/sbin/ipf} \
120 -f "${ipfilter_rules}" ${ipfilter_flags}
122 ${ipfilter_program:-/sbin/ipf} -6 -EFa
123 if [ -r "${ipv6_ipfilter_rules}" ]; then
124 ${ipfilter_program:-/sbin/ipf} -6 \
125 -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
130 if [ -f /etc/ipf.conf ]; then
131 /sbin/ipf -f /etc/ipf.conf
133 if [ -f /etc/ipf6.conf ]; then
134 /sbin/ipf -6 -f /etc/ipf6.conf
144 echo "Saving firewall state tables"
145 ${ipfs_program:-/sbin/ipfs} -W ${ipfs_flags}
148 echo "Saving firewall state tables"
149 ${ipfs_program:-/sbin/ipfs} -W ${ipfs_flags}
154 # XXX - The following command is not effective for 'lkm's
155 echo "Disabling ipfilter."
161 echo "Reloading ipfilter rules."
165 ${ipfilter_program:-/sbin/ipf} -I -Fa
166 if [ -r "${ipfilter_rules}" ]; then
167 ${ipfilter_program:-/sbin/ipf} -I \
168 -f "${ipfilter_rules}" ${ipfilter_flags}
170 ${ipfilter_program:-/sbin/ipf} -I -6 -Fa
171 if [ -r "${ipv6_ipfilter_rules}" ]; then
172 ${ipfilter_program:-/sbin/ipf} -I -6 \
173 -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
175 ${ipfilter_program:-/sbin/ipf} -s
178 ${ipfilter_program:-/sbin/ipf} -I -Fa
179 if [ -r "${ipfilter_rules}" ]; then
180 ${ipfilter_program:-/sbin/ipf} -I \
181 -f "${ipfilter_rules}" ${ipfilter_flags}
183 ${ipfilter_program:-/sbin/ipf} -I -6 -Fa
184 if [ -r "${ipv6_ipfilter_rules}" ]; then
185 ${ipfilter_program:-/sbin/ipf} -I -6 \
186 -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
188 ${ipfilter_program:-/sbin/ipf} -s
192 if [ -f /etc/ipf.conf ] && ! /sbin/ipf -I -f /etc/ipf.conf; then
193 err 1 "reload of ipf.conf failed; not swapping to" \
196 if [ -f /etc/ipf6.conf ] && \
197 ! /sbin/ipf -I -6 -f /etc/ipf6.conf; then
198 err 1 "reload of ipf6.conf failed; not swapping to" \
211 # Don't resync if ipfilter is not loaded
212 [ sysctl net.inet.ipf.fr_pass > /dev/null 2>&1 ] && return
215 # Don't resync if ipfilter is not loaded
216 [ sysctl net.inet.ipf.fr_pass > /dev/null 2>&1 ] && return
219 ${ipfilter_program:-/sbin/ipf} -y ${ipfilter_flags}
224 ${ipfilter_program:-/sbin/ipf} -V