[Midnightbsd-cvs] src [11686] trunk/etc/rc.d/pflog: update pflog

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Jul 8 16:26:48 EDT 2018


Revision: 11686
          http://svnweb.midnightbsd.org/src/?rev=11686
Author:   laffer1
Date:     2018-07-08 16:26:47 -0400 (Sun, 08 Jul 2018)
Log Message:
-----------
update pflog

Modified Paths:
--------------
    trunk/etc/rc.d/pflog

Modified: trunk/etc/rc.d/pflog
===================================================================
--- trunk/etc/rc.d/pflog	2018-07-08 20:25:56 UTC (rev 11685)
+++ trunk/etc/rc.d/pflog	2018-07-08 20:26:47 UTC (rev 11686)
@@ -1,10 +1,9 @@
 #!/bin/sh
 #
 # $MidnightBSD$
-#
 
 # PROVIDE: pflog
-# REQUIRE: FILESYSTEMS netif
+# REQUIRE: FILESYSTEMS netif FILESYSTEMS
 # KEYWORD: nojail
 
 . /etc/rc.subr
@@ -24,14 +23,25 @@
 {
 	load_kld pflog || return 1
 
-	# set pflog0 interface to up state
-	if ! ifconfig pflog0 up; then
-		warn 'could not bring up pflog0.'
+	# create pflog_dev interface if needed
+	if ! ifconfig $pflog_dev > /dev/null 2>&1; then
+		if ! ifconfig $pflog_dev create; then
+			warn "could not create $pflog_dev."
+			return 1
+		fi
+	fi
+
+	# set pflog_dev interface to up state
+	if ! ifconfig $pflog_dev up; then
+		warn "could not bring up $pflog_dev."
 		return 1
 	fi
 
+	# -p flag requires stripping pidfile's leading /var/run and trailing .pid
+	pidfile=$(echo $pidfile | sed -e 's|/var/run/||' -e 's|.pid$||')
+
 	# prepare the command line for pflogd
-	rc_flags="-f $pflog_logfile $rc_flags"
+	rc_flags="-p $pidfile -f $pflog_logfile -i $pflog_dev $rc_flags"
 
 	# report we're ready to run pflogd
 	return 0
@@ -39,10 +49,15 @@
 
 pflog_poststop()
 {
-	if ! ifconfig pflog0 down; then
-		warn 'could not bring down pflog0.'
+	if ! ifconfig $pflog_dev down; then
+		warn "could not bring down $pflog_dev."
 		return 1
 	fi
+
+	if [ "$pflog_instances" ] && [ -n "$pflog_instances" ]; then
+		rm $pidfile
+	fi
+
 	return 0
 }
 
@@ -53,4 +68,37 @@
 }
 
 load_rc_config $name
-run_rc_command "$1"
+
+# Check if spawning multiple pflogd and told what to spawn
+if [ -n "$2" ]; then
+	# Set required variables
+	eval pflog_dev=\$pflog_${2}_dev
+	eval pflog_logfile=\$pflog_${2}_logfile
+	eval pflog_flags=\$pflog_${2}_flags
+	# Check that required vars have non-zero length, warn if not.
+	if [ -z $pflog_dev ]; then
+		warn "pflog_dev not set"
+		continue
+	fi
+	if [ -z $pflog_logfile ]; then
+		warn "pflog_logfile not set"
+		continue
+	fi
+
+	# Provide a unique pidfile name for pflogd -p <pidfile> flag
+	pidfile="/var/run/pflogd.$2.pid"
+
+	# Override service name and execute command
+	name=$pflog_dev
+	run_rc_command "$1"
+# Check if spawning multiple pflogd and not told what to spawn
+elif [ "$pflog_instances" ] && [ -n "$pflog_instances" ]; then
+	# Interate through requested instances.
+	for i in $pflog_instances; do
+		/etc/rc.d/pflog $1 $i
+	done
+else
+	# Typical case, spawn single instance only.
+	pflog_dev=${pflog_dev:-"pflog0"}
+	run_rc_command "$1"
+fi



More information about the Midnightbsd-cvs mailing list