rc.d: document 'quiet' prefix and fix dhclient/devd interaction

Document the current semantics of the 'quiet' command prefix
in the rc.subr(8).

Fix dhclient rc.d script: it should not call err() for
non-DHCP-enabled interface when it is called from devd, because the
latter just blindly calls 'service dhclient quietstart' on each "link
up" event.

Since the 'quietstart' will silence the message "Cannot 'start' <foo>.
Set <foo>_enable to YES in /etc/rc.conf or use 'onestart' instead of
'start'." and running dhclient on the non-DHCP-enabled interface is
the same thing as running the service <foo> without <foo>_enable set,
such modification is in sync with the current semantics of the 'quiet'
prefix.

Approved by: glebius
Reviewed by: freebsd-rc list
MFC after:	2 weeks
This commit is contained in:
Eygene Ryabinkin 2012-01-12 06:48:11 +00:00
parent 8c261aeac3
commit 0113cca483
3 changed files with 26 additions and 3 deletions

View File

@ -22,7 +22,14 @@ stop_precmd="dhclient_pre_check"
dhclient_pre_check()
{
if [ -z "${rc_force}" ] && ! dhcpif $ifn; then
err 1 "'$ifn' is not a DHCP-enabled interface"
local msg
msg="'$ifn' is not a DHCP-enabled interface"
if [ -z "${rc_quiet}" ]; then
err 1 "$msg"
else
debug "$msg"
exit 1
fi
fi
}

View File

@ -1116,7 +1116,7 @@ load_rc_config_var()
#
rc_usage()
{
echo -n 1>&2 "Usage: $0 [fast|force|one]("
echo -n 1>&2 "Usage: $0 [fast|force|one|quiet]("
_sep=
for _elem; do

View File

@ -339,7 +339,7 @@ with
being the list of valid arguments
prefixed by
.Sm off
.Dq Bq Li fast | force | one .
.Dq Bq Li fast | force | one | quiet .
.Sm on
.It Ic reverse_list Ar item ...
Print the list of
@ -427,6 +427,22 @@ Skip the checks for
being set to
.Dq Li YES ,
but performs all the other prerequisite tests.
.It Li quiet
Inhibits some verbose diagnostics.
Currently, this includes messages
.Qq Starting ${name}
(as checked by
.Ic check_startmsgs
inside
.Nm )
and errors about usage of services that are not enabled in
.Xr rc.conf 5 .
This prefix also sets
.Va rc_quiet Ns = Ns Li YES .
.Em Please, note:
.Va rc_quiet
is not intended to completely mask all debug and warning messages,
but only certain small classes of them.
.El
.Pp
.Ic run_rc_command