xref: /freebsd-12.1/libexec/rc/rc.d/ipfilter (revision 0696600c)
1*0696600cSBjoern A. Zeeb#!/bin/sh
2*0696600cSBjoern A. Zeeb#
3*0696600cSBjoern A. Zeeb# $FreeBSD$
4*0696600cSBjoern A. Zeeb#
5*0696600cSBjoern A. Zeeb
6*0696600cSBjoern A. Zeeb# PROVIDE: ipfilter
7*0696600cSBjoern A. Zeeb# REQUIRE: FILESYSTEMS
8*0696600cSBjoern A. Zeeb# KEYWORD: nojail
9*0696600cSBjoern A. Zeeb
10*0696600cSBjoern A. Zeeb. /etc/rc.subr
11*0696600cSBjoern A. Zeeb
12*0696600cSBjoern A. Zeebname="ipfilter"
13*0696600cSBjoern A. Zeebdesc="IP packet filter"
14*0696600cSBjoern A. Zeebrcvar="ipfilter_enable"
15*0696600cSBjoern A. Zeebload_rc_config $name
16*0696600cSBjoern A. Zeebstop_precmd="test -f ${ipfilter_rules} -o -f ${ipv6_ipfilter_rules}"
17*0696600cSBjoern A. Zeeb
18*0696600cSBjoern A. Zeebstart_precmd="$stop_precmd"
19*0696600cSBjoern A. Zeebstart_cmd="ipfilter_start"
20*0696600cSBjoern A. Zeebstop_cmd="ipfilter_stop"
21*0696600cSBjoern A. Zeebreload_precmd="$stop_precmd"
22*0696600cSBjoern A. Zeebreload_cmd="ipfilter_reload"
23*0696600cSBjoern A. Zeebresync_precmd="$stop_precmd"
24*0696600cSBjoern A. Zeebresync_cmd="ipfilter_resync"
25*0696600cSBjoern A. Zeebstatus_precmd="$stop_precmd"
26*0696600cSBjoern A. Zeebstatus_cmd="ipfilter_status"
27*0696600cSBjoern A. Zeebextra_commands="reload resync"
28*0696600cSBjoern A. Zeebrequired_modules="ipl:ipfilter"
29*0696600cSBjoern A. Zeeb
30*0696600cSBjoern A. Zeebipfilter_start()
31*0696600cSBjoern A. Zeeb{
32*0696600cSBjoern A. Zeeb	echo "Enabling ipfilter."
33*0696600cSBjoern A. Zeeb	if ! ${ipfilter_program:-/sbin/ipf} -V | grep -q 'Running: yes'; then
34*0696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -E
35*0696600cSBjoern A. Zeeb	fi
36*0696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -Fa
37*0696600cSBjoern A. Zeeb	if [ -r "${ipfilter_rules}" ]; then
38*0696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} \
39*0696600cSBjoern A. Zeeb		    -f "${ipfilter_rules}" ${ipfilter_flags}
40*0696600cSBjoern A. Zeeb	fi
41*0696600cSBjoern A. Zeeb	if [ -r "${ipv6_ipfilter_rules}" ]; then
42*0696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -6 \
43*0696600cSBjoern A. Zeeb		    -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
44*0696600cSBjoern A. Zeeb	fi
45*0696600cSBjoern A. Zeeb}
46*0696600cSBjoern A. Zeeb
47*0696600cSBjoern A. Zeebipfilter_stop()
48*0696600cSBjoern A. Zeeb{
49*0696600cSBjoern A. Zeeb	if ${ipfilter_program:-/sbin/ipf} -V | grep -q 'Running: yes'; then
50*0696600cSBjoern A. Zeeb		echo "Saving firewall state tables"
51*0696600cSBjoern A. Zeeb		${ipfs_program:-/sbin/ipfs} -W ${ipfs_flags}
52*0696600cSBjoern A. Zeeb		echo "Disabling ipfilter."
53*0696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -D
54*0696600cSBjoern A. Zeeb	fi
55*0696600cSBjoern A. Zeeb}
56*0696600cSBjoern A. Zeeb
57*0696600cSBjoern A. Zeebipfilter_reload()
58*0696600cSBjoern A. Zeeb{
59*0696600cSBjoern A. Zeeb	echo "Reloading ipfilter rules."
60*0696600cSBjoern A. Zeeb
61*0696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -I -Fa
62*0696600cSBjoern A. Zeeb	if [ -r "${ipfilter_rules}" ]; then
63*0696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -I \
64*0696600cSBjoern A. Zeeb		    -f "${ipfilter_rules}" ${ipfilter_flags}
65*0696600cSBjoern A. Zeeb		if [ $? -ne 0 ]; then
66*0696600cSBjoern A. Zeeb			err 1 'Load of rules into alternate set failed; aborting reload'
67*0696600cSBjoern A. Zeeb		fi
68*0696600cSBjoern A. Zeeb	fi
69*0696600cSBjoern A. Zeeb	if [ -r "${ipv6_ipfilter_rules}" ]; then
70*0696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -I -6 \
71*0696600cSBjoern A. Zeeb		    -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
72*0696600cSBjoern A. Zeeb		if [ $? -ne 0 ]; then
73*0696600cSBjoern A. Zeeb			err 1 'Load of IPv6 rules into alternate set failed; aborting reload'
74*0696600cSBjoern A. Zeeb		fi
75*0696600cSBjoern A. Zeeb	fi
76*0696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -s
77*0696600cSBjoern A. Zeeb
78*0696600cSBjoern A. Zeeb}
79*0696600cSBjoern A. Zeeb
80*0696600cSBjoern A. Zeebipfilter_resync()
81*0696600cSBjoern A. Zeeb{
82*0696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -y ${ipfilter_flags}
83*0696600cSBjoern A. Zeeb}
84*0696600cSBjoern A. Zeeb
85*0696600cSBjoern A. Zeebipfilter_status()
86*0696600cSBjoern A. Zeeb{
87*0696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -V
88*0696600cSBjoern A. Zeeb}
89*0696600cSBjoern A. Zeeb
90*0696600cSBjoern A. Zeebrun_rc_command "$1"
91