10696600cSBjoern A. Zeeb#!/bin/sh 20696600cSBjoern A. Zeeb# 30696600cSBjoern A. Zeeb# $FreeBSD$ 40696600cSBjoern A. Zeeb# 50696600cSBjoern A. Zeeb 60696600cSBjoern A. Zeeb# PROVIDE: pf 79ef91759SPawel Biernacki# REQUIRE: FILESYSTEMS netif pflog pfsync routing 80696600cSBjoern A. Zeeb# KEYWORD: nojailvnet 90696600cSBjoern A. Zeeb 100696600cSBjoern A. Zeeb. /etc/rc.subr 110696600cSBjoern A. Zeeb 120696600cSBjoern A. Zeebname="pf" 130696600cSBjoern A. Zeebdesc="Packet filter" 140696600cSBjoern A. Zeebrcvar="pf_enable" 150696600cSBjoern A. Zeebload_rc_config $name 160696600cSBjoern A. Zeebstart_cmd="pf_start" 170696600cSBjoern A. Zeebstop_cmd="pf_stop" 180696600cSBjoern A. Zeebcheck_cmd="pf_check" 190696600cSBjoern A. Zeebreload_cmd="pf_reload" 200696600cSBjoern A. Zeebresync_cmd="pf_resync" 210696600cSBjoern A. Zeebstatus_cmd="pf_status" 220696600cSBjoern A. Zeebextra_commands="check reload resync" 230696600cSBjoern A. Zeebrequired_files="$pf_rules" 240696600cSBjoern A. Zeebrequired_modules="pf" 250696600cSBjoern A. Zeeb 26*28f47a19SThomas Steen Rasmussenpf_fallback() 27*28f47a19SThomas Steen Rasmussen{ 28*28f47a19SThomas Steen Rasmussen warn "Unable to load $pf_rules." 29*28f47a19SThomas Steen Rasmussen 30*28f47a19SThomas Steen Rasmussen if ! checkyesno pf_fallback_rules_enable; then 31*28f47a19SThomas Steen Rasmussen return 32*28f47a19SThomas Steen Rasmussen fi 33*28f47a19SThomas Steen Rasmussen 34*28f47a19SThomas Steen Rasmussen if [ -f $pf_fallback_rules_file ]; then 35*28f47a19SThomas Steen Rasmussen warn "Loading fallback rules file: $pf_fallback_rules_file" 36*28f47a19SThomas Steen Rasmussen $pf_program -f "$pf_fallback_rules_file" $pf_flags 37*28f47a19SThomas Steen Rasmussen else 38*28f47a19SThomas Steen Rasmussen warn "Loading fallback rules: $pf_fallback_rules" 39*28f47a19SThomas Steen Rasmussen echo $pf_fallback_rules | $pf_program -f - $pf_flags 40*28f47a19SThomas Steen Rasmussen fi 41*28f47a19SThomas Steen Rasmussen} 42*28f47a19SThomas Steen Rasmussen 430696600cSBjoern A. Zeebpf_start() 440696600cSBjoern A. Zeeb{ 450696600cSBjoern A. Zeeb check_startmsgs && echo -n 'Enabling pf' 460696600cSBjoern A. Zeeb $pf_program -F all > /dev/null 2>&1 47*28f47a19SThomas Steen Rasmussen $pf_program -f "$pf_rules" $pf_flags || pf_fallback 480696600cSBjoern A. Zeeb if ! $pf_program -s info | grep -q "Enabled" ; then 490696600cSBjoern A. Zeeb $pf_program -eq 500696600cSBjoern A. Zeeb fi 510696600cSBjoern A. Zeeb check_startmsgs && echo '.' 520696600cSBjoern A. Zeeb} 530696600cSBjoern A. Zeeb 540696600cSBjoern A. Zeebpf_stop() 550696600cSBjoern A. Zeeb{ 560696600cSBjoern A. Zeeb if $pf_program -s info | grep -q "Enabled" ; then 570696600cSBjoern A. Zeeb echo -n 'Disabling pf' 580696600cSBjoern A. Zeeb $pf_program -dq 590696600cSBjoern A. Zeeb echo '.' 600696600cSBjoern A. Zeeb fi 610696600cSBjoern A. Zeeb} 620696600cSBjoern A. Zeeb 630696600cSBjoern A. Zeebpf_check() 640696600cSBjoern A. Zeeb{ 650696600cSBjoern A. Zeeb echo "Checking pf rules." 660696600cSBjoern A. Zeeb $pf_program -n -f "$pf_rules" $pf_flags 670696600cSBjoern A. Zeeb} 680696600cSBjoern A. Zeeb 690696600cSBjoern A. Zeebpf_reload() 700696600cSBjoern A. Zeeb{ 710696600cSBjoern A. Zeeb echo "Reloading pf rules." 720696600cSBjoern A. Zeeb pf_resync 730696600cSBjoern A. Zeeb} 740696600cSBjoern A. Zeeb 750696600cSBjoern A. Zeebpf_resync() 760696600cSBjoern A. Zeeb{ 770696600cSBjoern A. Zeeb $pf_program -n -f "$pf_rules" $pf_flags || return 1 780696600cSBjoern A. Zeeb $pf_program -f "$pf_rules" $pf_flags 790696600cSBjoern A. Zeeb} 800696600cSBjoern A. Zeeb 810696600cSBjoern A. Zeebpf_status() 820696600cSBjoern A. Zeeb{ 830696600cSBjoern A. Zeeb if ! [ -c /dev/pf ] ; then 840696600cSBjoern A. Zeeb echo "pf.ko is not loaded" 850696600cSBjoern A. Zeeb return 1 860696600cSBjoern A. Zeeb else 870696600cSBjoern A. Zeeb $pf_program -s info 880696600cSBjoern A. Zeeb $pf_program -s Running >/dev/null 890696600cSBjoern A. Zeeb fi 900696600cSBjoern A. Zeeb} 910696600cSBjoern A. Zeeb 920696600cSBjoern A. Zeebrun_rc_command "$1" 93