Home | History | Annotate | Line # | Download | only in rc.d
      1 #!/bin/sh
      2 #
      3 # $NetBSD: ipfilter,v 1.21 2020/09/08 12:52:18 martin Exp $
      4 #
      5 
      6 # PROVIDE: ipfilter
      7 # REQUIRE: root bootconf CRITLOCALMOUNTED tty
      8 
      9 $_rc_subr_loaded . /etc/rc.subr
     10 
     11 name="ipfilter"
     12 rcvar=$name
     13 start_precmd="ipfilter_prestart"
     14 start_cmd="ipfilter_start"
     15 stop_precmd="test -f /etc/ipf.conf -o -f /etc/ipf6.conf"
     16 stop_cmd="ipfilter_stop"
     17 reload_precmd="$stop_precmd"
     18 reload_cmd="ipfilter_reload"
     19 resync_precmd="$stop_precmd"
     20 resync_cmd="ipfilter_resync"
     21 status_precmd="$stop_precmd"
     22 status_cmd="ipfilter_status"
     23 extra_commands="reload resync status"
     24 
     25 ipfilter_prestart()
     26 {
     27 	if [ ! -f /etc/ipf.conf ] && [ ! -f /etc/ipf6.conf ]; then
     28 		warn "/etc/ipf*.conf not readable; ipfilter start aborted."
     29 
     30 		stop_boot
     31 		return 1
     32 	fi
     33 	return 0
     34 }
     35 
     36 ipfilter_start()
     37 {
     38 	echo "Enabling ipfilter."
     39 	/sbin/ipf ${rc_flags} -E
     40 
     41 		# Do the flush first; since older ipf has different semantics.
     42 		#
     43 	if [ -f /etc/ipf.conf ]; then
     44 		/sbin/ipf -Fa
     45 	fi
     46 	if [ -f /etc/ipf6.conf ]; then
     47 		/sbin/ipf -6 -Fa
     48 	fi
     49 
     50 		# Now load the config files
     51 		#
     52 	if [ -f /etc/ipf.conf ]; then
     53 		/sbin/ipf -f /etc/ipf.conf
     54 	fi
     55 	if [ -f /etc/ipf6.conf ]; then
     56 		/sbin/ipf -6 -f /etc/ipf6.conf
     57 	fi
     58 }
     59 
     60 ipfilter_stop()
     61 {
     62 	echo "Disabling ipfilter."
     63 	/sbin/ipf -D
     64 }
     65 
     66 ipfilter_reload()
     67 {
     68 	echo "Reloading ipfilter rules."
     69 
     70 		# Do the flush first; since older ipf has different semantics.
     71 		#
     72 	if [ -f /etc/ipf.conf ]; then
     73 		/sbin/ipf -I -Fa
     74 	fi
     75 	if [ -f /etc/ipf6.conf ]; then
     76 		/sbin/ipf -6 -I -Fa
     77 	fi
     78 
     79 		# Now load the config files into the Inactive set
     80 		#
     81 	if [ -f /etc/ipf.conf ] && ! /sbin/ipf -I -f /etc/ipf.conf; then
     82 		err 1 "reload of ipf.conf failed; not swapping to new ruleset."
     83 	fi
     84 	if [ -f /etc/ipf6.conf ] && ! /sbin/ipf -I -6 -f /etc/ipf6.conf; then
     85 		err 1 "reload of ipf6.conf failed; not swapping to new ruleset."
     86 	fi
     87 
     88 		# Swap in the new rules
     89 		#
     90 	/sbin/ipf -s
     91 }
     92 
     93 ipfilter_resync()
     94 {
     95 	/sbin/ipf -y
     96 }
     97 
     98 ipfilter_status()
     99 {
    100 	/sbin/ipf -V
    101 }
    102 
    103 load_rc_config $name
    104 run_rc_command "$1"
    105