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"
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to