svn commit: r200448 - head/etc/rc.d

Doug Barton dougb at FreeBSD.org
Sat Dec 12 13:51:51 PST 2009


Author: dougb
Date: Sat Dec 12 21:51:50 2009
New Revision: 200448
URL: http://svn.freebsd.org/changeset/base/200448

Log:
  Since the change to rc.subr in r198162 it's not necessary to specify
  command in the rc.d script if we have a corresponding ${name}_program
  entry, which we do for named.
  
  Rename named_precmd to named_prestart to make it more clear and match
  convention.
  
  Move the command_args definition related to -u up into _prestart().
  It (and the associated $named_uid value) are only used there, and
  unlike required_* and pidfile don't need to be used until this stage.
  
  Fix a silly bug that would only have affected people who were using
  the new named_wait or named_auto_forward features, AND had set up an
  rndc.conf file instead of using the automatically generated rndc.key.
  
  For named_conf:
  	Add "-c $named_conf" to command_args if it's not set to the
  	default. If it is set to the default and we're using the base
  	BIND it's not necessary. If we're using BIND from the ports
  	the user is likely to have included it in _flags (due to long
  	necessity for doing so) so don't duplicate that if it's set.
  
  	Add $named_conf to required_files

Modified:
  head/etc/rc.d/named

Modified: head/etc/rc.d/named
==============================================================================
--- head/etc/rc.d/named	Sat Dec 12 21:31:07 2009	(r200447)
+++ head/etc/rc.d/named	Sat Dec 12 21:51:50 2009	(r200448)
@@ -12,10 +12,9 @@
 name="named"
 rcvar=named_enable
 
-command="/usr/sbin/named"
 extra_commands="reload"
 
-start_precmd="named_precmd"
+start_precmd="named_prestart"
 start_postcmd="named_poststart"
 reload_cmd="named_reload"
 stop_cmd="named_stop"
@@ -155,8 +154,17 @@ create_file () {
 	chmod 644 $1
 }
 
-named_precmd()
+named_prestart()
 {
+	command_args="-u ${named_uid:=root}"
+
+	if [ ! "$named_conf" = '/etc/namedb/named.conf' ]; then
+		case "$named_flags" in
+		-c*|*' -c'*) ;;		# No need to add it
+		*) command_args="-c $named_conf $command_args" ;;
+		esac
+	fi
+
 	local line nsip firstns
 
 	# Is the user using a sandbox?
@@ -170,11 +178,11 @@ named_precmd()
 
 	# Create an rndc.key file for the user if none exists
 	#
-	if [ -s "${named_chrootdir}/etc/namedb/rndc.conf" ]; then
-		return 0
-	fi
 	confgen_command="${command%/named}/rndc-confgen -a -b256 -u $named_uid \
 	    -c ${named_chrootdir}/etc/namedb/rndc.key"
+	if [ -s "${named_chrootdir}/etc/namedb/rndc.conf" ]; then
+		unset confgen_command
+	fi
 	if [ -s "${named_chrootdir}/etc/namedb/rndc.key" ]; then
 		case `stat -f%Su ${named_chrootdir}/etc/namedb/rndc.key` in
 		root|$named_uid) ;;
@@ -260,10 +268,11 @@ named_precmd()
 }
 
 load_rc_config $name
+
 # Updating the following variables requires that rc.conf be loaded first
 #
 required_dirs="$named_chrootdir"	# if it is set, it must exist
+required_files="${named_conf:=/etc/namedb/named.conf}"
 pidfile="${named_pidfile:-/var/run/named/pid}"
-command_args="-u ${named_uid:=root}"
 
 run_rc_command "$1"


More information about the svn-src-all mailing list