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

Eygene Ryabinkin rea at FreeBSD.org
Fri Oct 28 06:03:39 UTC 2011


Author: rea (ports committer)
Date: Fri Oct 28 06:03:38 2011
New Revision: 226879
URL: http://svn.freebsd.org/changeset/base/226879

Log:
  Fix handling of rc_force in /etc/rc.d/dhclient
  
  Variable 'rc_force' is accessible only at the time of rc_run_command,
  so it can't be examined from the script's main code.
  
  Spotted by:	hrs
  Reviewed by:	hrs, des
  Approved by:	des
  MFC after:	2 weeks

Modified:
  head/etc/rc.d/dhclient

Modified: head/etc/rc.d/dhclient
==============================================================================
--- head/etc/rc.d/dhclient	Fri Oct 28 04:04:21 2011	(r226878)
+++ head/etc/rc.d/dhclient	Fri Oct 28 06:03:38 2011	(r226879)
@@ -15,9 +15,21 @@ name="dhclient"
 rcvar=
 pidfile="/var/run/${name}.${ifn}.pid"
 start_precmd="dhclient_prestart"
+stop_precmd="dhclient_pre_check"
+
+# rc_force check can only be done at the run_rc_command
+# time, so we're testing it in the pre* hooks.
+dhclient_pre_check()
+{
+	if [ -z "${rc_force}" ] && ! dhcpif $ifn; then
+		err 1 "'$ifn' is not a DHCP-enabled interface"
+	fi
+}
 
 dhclient_prestart()
 {
+	dhclient_pre_check
+
 	# Interface-specific flags (see rc.subr for $flags setting)
 	specific=$(get_if_var $ifn dhclient_flags_IF)
 	if [ -z "$flags" -a -n "$specific" ]; then
@@ -38,11 +50,8 @@ load_rc_config network
 if [ -z $ifn ] ; then
 	# only complain if a command was specified but no interface
 	if [ -n "$1" ] ; then
-		echo 1>&2 "$0: no interface specified"
-		return 1
+		err 1 "$0: no interface specified"
 	fi
-elif [ -z "${rc_force}" ] && ! dhcpif $ifn; then
-	return 1
 fi
 
 run_rc_command "$1"


More information about the svn-src-all mailing list