xref: /freebsd-13.1/libexec/rc/rc.d/ipfilter (revision 51da4b19)
10696600cSBjoern A. Zeeb#!/bin/sh
20696600cSBjoern A. Zeeb#
30696600cSBjoern A. Zeeb# $FreeBSD$
40696600cSBjoern A. Zeeb#
50696600cSBjoern A. Zeeb
60696600cSBjoern A. Zeeb# PROVIDE: ipfilter
70696600cSBjoern A. Zeeb# REQUIRE: FILESYSTEMS
8*51da4b19SCy Schubert# BEFORE: ipmon ipnat netif netwait securelevel
9795be686SCy Schubert# KEYWORD: nojailvnet
100696600cSBjoern A. Zeeb
110696600cSBjoern A. Zeeb. /etc/rc.subr
120696600cSBjoern A. Zeeb
130696600cSBjoern A. Zeebname="ipfilter"
140696600cSBjoern A. Zeebdesc="IP packet filter"
150696600cSBjoern A. Zeebrcvar="ipfilter_enable"
160696600cSBjoern A. Zeebload_rc_config $name
170696600cSBjoern A. Zeebstop_precmd="test -f ${ipfilter_rules} -o -f ${ipv6_ipfilter_rules}"
180696600cSBjoern A. Zeeb
190696600cSBjoern A. Zeebstart_precmd="$stop_precmd"
200696600cSBjoern A. Zeebstart_cmd="ipfilter_start"
210696600cSBjoern A. Zeebstop_cmd="ipfilter_stop"
220696600cSBjoern A. Zeebreload_precmd="$stop_precmd"
230696600cSBjoern A. Zeebreload_cmd="ipfilter_reload"
240696600cSBjoern A. Zeebresync_precmd="$stop_precmd"
250696600cSBjoern A. Zeebresync_cmd="ipfilter_resync"
260696600cSBjoern A. Zeebstatus_precmd="$stop_precmd"
270696600cSBjoern A. Zeebstatus_cmd="ipfilter_status"
280696600cSBjoern A. Zeebextra_commands="reload resync"
290696600cSBjoern A. Zeebrequired_modules="ipl:ipfilter"
300696600cSBjoern A. Zeeb
310696600cSBjoern A. Zeebipfilter_start()
320696600cSBjoern A. Zeeb{
330696600cSBjoern A. Zeeb	echo "Enabling ipfilter."
340696600cSBjoern A. Zeeb	if ! ${ipfilter_program:-/sbin/ipf} -V | grep -q 'Running: yes'; then
350696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -E
360696600cSBjoern A. Zeeb	fi
370696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -Fa
380696600cSBjoern A. Zeeb	if [ -r "${ipfilter_rules}" ]; then
390696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} \
400696600cSBjoern A. Zeeb		    -f "${ipfilter_rules}" ${ipfilter_flags}
410696600cSBjoern A. Zeeb	fi
420696600cSBjoern A. Zeeb	if [ -r "${ipv6_ipfilter_rules}" ]; then
430696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -6 \
440696600cSBjoern A. Zeeb		    -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
450696600cSBjoern A. Zeeb	fi
460696600cSBjoern A. Zeeb}
470696600cSBjoern A. Zeeb
480696600cSBjoern A. Zeebipfilter_stop()
490696600cSBjoern A. Zeeb{
500696600cSBjoern A. Zeeb	if ${ipfilter_program:-/sbin/ipf} -V | grep -q 'Running: yes'; then
510696600cSBjoern A. Zeeb		echo "Saving firewall state tables"
520696600cSBjoern A. Zeeb		${ipfs_program:-/sbin/ipfs} -W ${ipfs_flags}
530696600cSBjoern A. Zeeb		echo "Disabling ipfilter."
540696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -D
550696600cSBjoern A. Zeeb	fi
560696600cSBjoern A. Zeeb}
570696600cSBjoern A. Zeeb
580696600cSBjoern A. Zeebipfilter_reload()
590696600cSBjoern A. Zeeb{
600696600cSBjoern A. Zeeb	echo "Reloading ipfilter rules."
610696600cSBjoern A. Zeeb
620696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -I -Fa
630696600cSBjoern A. Zeeb	if [ -r "${ipfilter_rules}" ]; then
640696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -I \
650696600cSBjoern A. Zeeb		    -f "${ipfilter_rules}" ${ipfilter_flags}
660696600cSBjoern A. Zeeb		if [ $? -ne 0 ]; then
670696600cSBjoern A. Zeeb			err 1 'Load of rules into alternate set failed; aborting reload'
680696600cSBjoern A. Zeeb		fi
690696600cSBjoern A. Zeeb	fi
700696600cSBjoern A. Zeeb	if [ -r "${ipv6_ipfilter_rules}" ]; then
710696600cSBjoern A. Zeeb		${ipfilter_program:-/sbin/ipf} -I -6 \
720696600cSBjoern A. Zeeb		    -f "${ipv6_ipfilter_rules}" ${ipfilter_flags}
730696600cSBjoern A. Zeeb		if [ $? -ne 0 ]; then
740696600cSBjoern A. Zeeb			err 1 'Load of IPv6 rules into alternate set failed; aborting reload'
750696600cSBjoern A. Zeeb		fi
760696600cSBjoern A. Zeeb	fi
770696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -s
780696600cSBjoern A. Zeeb
790696600cSBjoern A. Zeeb}
800696600cSBjoern A. Zeeb
810696600cSBjoern A. Zeebipfilter_resync()
820696600cSBjoern A. Zeeb{
830696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -y ${ipfilter_flags}
840696600cSBjoern A. Zeeb}
850696600cSBjoern A. Zeeb
860696600cSBjoern A. Zeebipfilter_status()
870696600cSBjoern A. Zeeb{
880696600cSBjoern A. Zeeb	${ipfilter_program:-/sbin/ipf} -V
890696600cSBjoern A. Zeeb}
900696600cSBjoern A. Zeeb
910696600cSBjoern A. Zeebrun_rc_command "$1"
92