Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Apr 2015 01:14:43 +0000 (UTC)
From:      Josh Paetzel <jpaetzel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r281446 - stable/10/etc/rc.d
Message-ID:  <201504120114.t3C1EhfG051038@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jpaetzel
Date: Sun Apr 12 01:14:43 2015
New Revision: 281446
URL: https://svnweb.freebsd.org/changeset/base/281446

Log:
  MFC 281112, 281166
  
  Bug fixes and feature adds
  
  - Remove extranious echo that breaks puppet
  - Handle restarts of multiple pflog devices correctly
  - Add the ability to perform actions on specific pflog devices.
  
  Typo Fix.
  
  PR:	199150

Modified:
  stable/10/etc/rc.d/pflog
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/etc/rc.d/pflog
==============================================================================
--- stable/10/etc/rc.d/pflog	Sun Apr 12 00:02:32 2015	(r281445)
+++ stable/10/etc/rc.d/pflog	Sun Apr 12 01:14:43 2015	(r281446)
@@ -24,30 +24,30 @@ pflog_prestart()
 {
 	load_kld pflog || return 1
 
+	# 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 -i $pflog_dev $rc_flags"
+	rc_flags="-p $pidfile -f $pflog_logfile -i $pflog_dev $rc_flags"
 
 	# report we're ready to run pflogd
 	return 0
 }
 
-pflog_poststart() {
-	# Allow child pflogd to settle
-	sleep 0.10
-	# More elegant(?) method for getting a unique pid
-	if [ -f /var/run/pflogd.pid ]; then
-		mv /var/run/pflogd.pid $pidfile
-	else
-		warn "/var/run/pflogd.pid does not exist. Too fast."
-	fi
-}
-
 pflog_poststop()
 {
 	if ! ifconfig $pflog_dev down; then
@@ -70,29 +70,33 @@ pflog_resync()
 
 load_rc_config $name
 
-# Check if spawning multiple pflogd
-echo "Starting pflogd: $pflog_instances"
-if [ "$pflog_instances" ] && [ -n "$pflog_instances" ]; then
-	start_postcmd="pflog_poststart"
+# 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
-		# Set required variables
-		eval pflog_dev=\$pflog_${i}_dev
-		eval pflog_logfile=\$pflog_${i}_logfile
-		eval pflog_flags=\$pflog_${i}_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
-		# pflogd sets a pidfile, but the name is hardcoded. Concoct a
-		# unique pidfile name.
-		pidfile="/var/run/pflogd.$i.pid"
-		run_rc_command "$1"
+		/etc/rc.d/pflog $1 $i
 	done
 else
 	# Typical case, spawn single instance only.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201504120114.t3C1EhfG051038>