1*48e64ca1SJose Luis Duran#!/bin/sh 2*48e64ca1SJose Luis Duran# 3*48e64ca1SJose Luis Duran# $NetBSD: blocklistd,v 1.2 2021/03/07 00:46:39 christos Exp $ 4*48e64ca1SJose Luis Duran# 5*48e64ca1SJose Luis Duran 6*48e64ca1SJose Luis Duran# PROVIDE: blocklistd 7*48e64ca1SJose Luis Duran# REQUIRE: npf pf ipfilter 8*48e64ca1SJose Luis Duran# BEFORE: SERVERS 9*48e64ca1SJose Luis Duran 10*48e64ca1SJose Luis Duran$_rc_subr_loaded . /etc/rc.subr 11*48e64ca1SJose Luis Duran 12*48e64ca1SJose Luis Duranname="blocklistd" 13*48e64ca1SJose Luis Duranrcvar=$name 14*48e64ca1SJose Luis Durancommand="/sbin/${name}" 15*48e64ca1SJose Luis Duranpidfile="/var/run/${name}.pid" 16*48e64ca1SJose Luis Duranrequired_files="/etc/${name}.conf" 17*48e64ca1SJose Luis Duranstart_precmd="${name}_precmd" 18*48e64ca1SJose Luis Duranextra_commands="reload" 19*48e64ca1SJose Luis Duran 20*48e64ca1SJose Luis Duran_sockfile="/var/run/${name}.sockets" 21*48e64ca1SJose Luis Duran_sockname="blocklistd.sock" 22*48e64ca1SJose Luis Duran 23*48e64ca1SJose Luis Duranblocklistd_precmd() 24*48e64ca1SJose Luis Duran{ 25*48e64ca1SJose Luis Duran # Create default list of blocklistd sockets to watch 26*48e64ca1SJose Luis Duran # 27*48e64ca1SJose Luis Duran ( umask 022 ; > $_sockfile ) 28*48e64ca1SJose Luis Duran 29*48e64ca1SJose Luis Duran # Find /etc/rc.d scripts with "chrootdir" rcorder(8) keyword, 30*48e64ca1SJose Luis Duran # and if $${app}_chrootdir is a directory, add appropriate 31*48e64ca1SJose Luis Duran # blocklistd socket to list of sockets to watch. 32*48e64ca1SJose Luis Duran # 33*48e64ca1SJose Luis Duran for _lr in $(rcorder -k chrootdir /etc/rc.d/*); do 34*48e64ca1SJose Luis Duran ( 35*48e64ca1SJose Luis Duran _l=${_lr##*/} 36*48e64ca1SJose Luis Duran load_rc_config ${_l} 37*48e64ca1SJose Luis Duran eval _ldir=\$${_l}_chrootdir 38*48e64ca1SJose Luis Duran if checkyesno $_l && [ -n "$_ldir" ]; then 39*48e64ca1SJose Luis Duran echo "${_ldir}/var/run/${_sockname}" >> $_sockfile 40*48e64ca1SJose Luis Duran fi 41*48e64ca1SJose Luis Duran ) 42*48e64ca1SJose Luis Duran done 43*48e64ca1SJose Luis Duran 44*48e64ca1SJose Luis Duran # If other sockets have been provided, change run_rc_command()'s 45*48e64ca1SJose Luis Duran # internal copy of $blocklistd_flags to force use of specific 46*48e64ca1SJose Luis Duran # blocklistd sockets. 47*48e64ca1SJose Luis Duran # 48*48e64ca1SJose Luis Duran if [ -s $_sockfile ]; then 49*48e64ca1SJose Luis Duran echo "/var/run/${_sockname}" >> $_sockfile 50*48e64ca1SJose Luis Duran rc_flags="-P $_sockfile $rc_flags" 51*48e64ca1SJose Luis Duran fi 52*48e64ca1SJose Luis Duran 53*48e64ca1SJose Luis Duran return 0 54*48e64ca1SJose Luis Duran} 55*48e64ca1SJose Luis Duran 56*48e64ca1SJose Luis Duranload_rc_config $name 57*48e64ca1SJose Luis Duranrun_rc_command "$1" 58