svn commit: r230007 - in head: etc etc/rc.d share/man/man8

Eygene Ryabinkin rea at freebsd.org
Fri Jan 13 03:21:47 UTC 2012


Thu, Jan 12, 2012 at 02:38:16PM -0500, John Baldwin wrote:
> On Thursday, January 12, 2012 9:35:05 am Eygene Ryabinkin wrote:
> > True, and it was suggested by Doug Barton.  But why bother when
> > the 'quiet' keyword is reserved for such cases?
> 
> Hmm, that's not quite how I see this.  Either /etc/rc.d/dhclient
> should silently exit if dhcpif is not true for the given interface,
> or it should always whine IMO.

It should tell one why it won't start DHCP on the interface, so it
should whine at least for the ordinary usage (service dhclient start
<if>), otherwise it will be hard to understand what's going on.

> Given that everywhere else uses dhcpif to decide if dhclient should
> be run, it seems that an explicit test of that should be used here
> as well, even if it means an extra script.  In short, this approach
> is not consisent with all other users of the dhclient script,

As I see, the only other conditional consumer of the dhclient script
is /etc/network.subr, procedure ifconfig_up.  And it has the other
reason to invoke dhcpif: it determines if dhclient should be run
synchronously and invokes it explicitely only in this case; for the
asynchronous dhclient it relies on the devd to do the work once the
interface will come up.

> and this seems a hackish approach whose primary goal is to avoid
> having devd use a wrapper script.  Perhaps that goal is worth the
> tradeoff, but it's not really clean.

Well, partly my reasoning for suppressing the error message was the
following one: 'quiet' will silence the messages about non-enabled
service (via <foo>_enabled) that is set via rc.conf and in DHCP case
we also have rc.conf knob (per-interface 'dhcp' keyword), so that's
not a different case.


But seems like the whole problem is that I used the err() function
instead of doing 'echo $errmsg; exit 1'.  Such code shouldn't be
conditionalized for the devd, since it is only syslog message that
worried people; devd doesn't care what is written to the standard
output or the standard error by the scripts it invokes once it become
the daemon, since everything goes to /dev/null after calling
daemon(3).

So, seems like that the following dhclient_pre_check() will make
everyone happy:
{{{
dhclient_pre_check()
{
        if [ -z "${rc_force}" ] && ! dhcpif $ifn; then
                echo "'$ifn' is not a DHCP-enabled interface"
		exit 1
        fi
}
}}}
Hadn't tested it yet, but will do it today.


> By your argument, btw since we use quietstart during boot, ifn_start
> shouldn't even check dhcpif at all now, but just always run the
> dhclient script (and if you did make that change, I would protest that
> it was very wrong).

Well, ifn_start (ifconfig_up to be precise) calls 'dhclient start'
and not the 'quietstart'.  Moreover, as I had explained, there is
other dance with syncdhcpif there, so it can't just invoke dhclient
unconditionally.


The related topic: in the process of grepping for dhclient within
/etc, I had found that /etc/netstart still wants to invoke it.  But it
will do a lone '/etc/rc.d/dhclient quietstart' and this will never
be useful in the current state of dhclient: it will refuse to process
any commands without the interface being specified.  And since we
have the invocation of /etc/rc.d/netif just two lines above, I think
that it will be good to remove call to dhclient from /etc/netstart.

At the time of the original addition of call to dhclient to /etc/netstart
(r114213), dhclient script had another form,
  http://svnweb.freebsd.org/base/head/etc/rc.d/dhclient?revision=113759&view=markup&pathrev=114213
and it was really a normal rc.d script that requires only one argument.
Now it is more of a helper-type script.
.
Am I missing something important here or the removal can really be
done?

Thanks.
-- 
Eygene Ryabinkin                                        ,,,^..^,,,
[ Life's unfair - but root password helps!           | codelabs.ru ]
[ 82FE 06BC D497 C0DE 49EC  4FF0 16AF 9EAE 8152 ECFB | freebsd.org ]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/svn-src-all/attachments/20120113/3807b40b/attachment.pgp


More information about the svn-src-all mailing list