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