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