1*325ce30bSDavid van Moolenbroek#!/bin/sh 2*325ce30bSDavid van Moolenbroek# 3*325ce30bSDavid van Moolenbroek# $NetBSD: ipfilter,v 1.18 2009/03/23 18:52:02 hannken Exp $ 4*325ce30bSDavid van Moolenbroek# 5*325ce30bSDavid van Moolenbroek 6*325ce30bSDavid van Moolenbroek# PROVIDE: ipfilter 7*325ce30bSDavid van Moolenbroek# REQUIRE: root bootconf mountcritlocal tty 8*325ce30bSDavid van Moolenbroek 9*325ce30bSDavid van Moolenbroek$_rc_subr_loaded . /etc/rc.subr 10*325ce30bSDavid van Moolenbroek 11*325ce30bSDavid van Moolenbroekname="ipfilter" 12*325ce30bSDavid van Moolenbroekrcvar=$name 13*325ce30bSDavid van Moolenbroekstart_precmd="ipfilter_prestart" 14*325ce30bSDavid van Moolenbroekstart_cmd="ipfilter_start" 15*325ce30bSDavid van Moolenbroekstop_precmd="test -f /etc/ipf.conf -o -f /etc/ipf6.conf" 16*325ce30bSDavid van Moolenbroekstop_cmd="ipfilter_stop" 17*325ce30bSDavid van Moolenbroekreload_precmd="$stop_precmd" 18*325ce30bSDavid van Moolenbroekreload_cmd="ipfilter_reload" 19*325ce30bSDavid van Moolenbroekresync_precmd="$stop_precmd" 20*325ce30bSDavid van Moolenbroekresync_cmd="ipfilter_resync" 21*325ce30bSDavid van Moolenbroekstatus_precmd="$stop_precmd" 22*325ce30bSDavid van Moolenbroekstatus_cmd="ipfilter_status" 23*325ce30bSDavid van Moolenbroekextra_commands="reload resync status" 24*325ce30bSDavid van Moolenbroek 25*325ce30bSDavid van Moolenbroekipfilter_prestart() 26*325ce30bSDavid van Moolenbroek{ 27*325ce30bSDavid van Moolenbroek if [ ! -f /etc/ipf.conf ] && [ ! -f /etc/ipf6.conf ]; then 28*325ce30bSDavid van Moolenbroek warn "/etc/ipf*.conf not readable; ipfilter start aborted." 29*325ce30bSDavid van Moolenbroek 30*325ce30bSDavid van Moolenbroek stop_boot 31*325ce30bSDavid van Moolenbroek return 1 32*325ce30bSDavid van Moolenbroek fi 33*325ce30bSDavid van Moolenbroek return 0 34*325ce30bSDavid van Moolenbroek} 35*325ce30bSDavid van Moolenbroek 36*325ce30bSDavid van Moolenbroekipfilter_start() 37*325ce30bSDavid van Moolenbroek{ 38*325ce30bSDavid van Moolenbroek echo "Enabling ipfilter." 39*325ce30bSDavid van Moolenbroek /sbin/ipf ${rc_flags} -E 40*325ce30bSDavid van Moolenbroek 41*325ce30bSDavid van Moolenbroek # Do the flush first; since older ipf has different semantics. 42*325ce30bSDavid van Moolenbroek # 43*325ce30bSDavid van Moolenbroek if [ -f /etc/ipf.conf ]; then 44*325ce30bSDavid van Moolenbroek /sbin/ipf -Fa 45*325ce30bSDavid van Moolenbroek fi 46*325ce30bSDavid van Moolenbroek if [ -f /etc/ipf6.conf ]; then 47*325ce30bSDavid van Moolenbroek /sbin/ipf -6 -Fa 48*325ce30bSDavid van Moolenbroek fi 49*325ce30bSDavid van Moolenbroek 50*325ce30bSDavid van Moolenbroek # Now load the config files 51*325ce30bSDavid van Moolenbroek # 52*325ce30bSDavid van Moolenbroek if [ -f /etc/ipf.conf ]; then 53*325ce30bSDavid van Moolenbroek /sbin/ipf -f /etc/ipf.conf 54*325ce30bSDavid van Moolenbroek fi 55*325ce30bSDavid van Moolenbroek if [ -f /etc/ipf6.conf ]; then 56*325ce30bSDavid van Moolenbroek /sbin/ipf -6 -f /etc/ipf6.conf 57*325ce30bSDavid van Moolenbroek fi 58*325ce30bSDavid van Moolenbroek} 59*325ce30bSDavid van Moolenbroek 60*325ce30bSDavid van Moolenbroekipfilter_stop() 61*325ce30bSDavid van Moolenbroek{ 62*325ce30bSDavid van Moolenbroek echo "Disabling ipfilter." 63*325ce30bSDavid van Moolenbroek /sbin/ipf -D 64*325ce30bSDavid van Moolenbroek} 65*325ce30bSDavid van Moolenbroek 66*325ce30bSDavid van Moolenbroekipfilter_reload() 67*325ce30bSDavid van Moolenbroek{ 68*325ce30bSDavid van Moolenbroek echo "Reloading ipfilter rules." 69*325ce30bSDavid van Moolenbroek 70*325ce30bSDavid van Moolenbroek # Do the flush first; since older ipf has different semantics. 71*325ce30bSDavid van Moolenbroek # 72*325ce30bSDavid van Moolenbroek if [ -f /etc/ipf.conf ]; then 73*325ce30bSDavid van Moolenbroek /sbin/ipf -I -Fa 74*325ce30bSDavid van Moolenbroek fi 75*325ce30bSDavid van Moolenbroek if [ -f /etc/ipf6.conf ]; then 76*325ce30bSDavid van Moolenbroek /sbin/ipf -6 -I -Fa 77*325ce30bSDavid van Moolenbroek fi 78*325ce30bSDavid van Moolenbroek 79*325ce30bSDavid van Moolenbroek # Now load the config files into the Inactive set 80*325ce30bSDavid van Moolenbroek # 81*325ce30bSDavid van Moolenbroek if [ -f /etc/ipf.conf ] && ! /sbin/ipf -I -f /etc/ipf.conf; then 82*325ce30bSDavid van Moolenbroek err 1 "reload of ipf.conf failed; not swapping to new ruleset." 83*325ce30bSDavid van Moolenbroek fi 84*325ce30bSDavid van Moolenbroek if [ -f /etc/ipf6.conf ] && ! /sbin/ipf -I -6 -f /etc/ipf6.conf; then 85*325ce30bSDavid van Moolenbroek err 1 "reload of ipf6.conf failed; not swapping to new ruleset." 86*325ce30bSDavid van Moolenbroek fi 87*325ce30bSDavid van Moolenbroek 88*325ce30bSDavid van Moolenbroek # Swap in the new rules 89*325ce30bSDavid van Moolenbroek # 90*325ce30bSDavid van Moolenbroek /sbin/ipf -s 91*325ce30bSDavid van Moolenbroek} 92*325ce30bSDavid van Moolenbroek 93*325ce30bSDavid van Moolenbroekipfilter_resync() 94*325ce30bSDavid van Moolenbroek{ 95*325ce30bSDavid van Moolenbroek /sbin/ipf -y 96*325ce30bSDavid van Moolenbroek} 97*325ce30bSDavid van Moolenbroek 98*325ce30bSDavid van Moolenbroekipfilter_status() 99*325ce30bSDavid van Moolenbroek{ 100*325ce30bSDavid van Moolenbroek /sbin/ipf -V 101*325ce30bSDavid van Moolenbroek} 102*325ce30bSDavid van Moolenbroek 103*325ce30bSDavid van Moolenbroekload_rc_config $name 104*325ce30bSDavid van Moolenbroekrun_rc_command "$1" 105