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