Wait for carrier in /etc/rc.d/defaultroute
Jeremy Chadwick
freebsd at jdc.parodius.com
Wed Sep 29 07:59:46 UTC 2010
On Mon, Sep 27, 2010 at 08:23:52PM -0700, Doug Barton wrote:
> On 9/24/2010 5:04 PM, Ed Maste wrote:
> >/etc/rc.d/defaultroute currently bails immediately if all interfaces
> >set to use DHCP have no carrier. This caused grief at work as it takes
> >some time for link to be established, and defaultroute ran before this
> >happened. The rest of rc.d/ ran then before DHCP could assign an
> >address and route.
> >
> >The attached patch introduces a defaultroute_carrier_delay variable
> >and a change to /etc/rc.d/defaultroute to wait that long before bailing
> >out if there are no interfaces with carrier. With the default settings
> >defaultroute will wait for five seconds to see if any interface gets
> >carrier. The original 30 second wait for a default route to appear is
> >unchanged.
> >
> >Any comments? I'll commit it sometime next week if there's no concern.
>
> There was a more generic solution floating around fairly recently,
> from Jeremy Chadwick. The thread on this list starts back in april,
> but the latest version of the script appeared in june, so you might
> want to start there. I used versions of that script for most of this
> calendar year, and offered to commit it if the rc.conf.5 update was
> written.
>
> Jeremy, if you've done that bit and I lost track, apologies, my
> FreeBSD time has been super limited lately, but it's on the upswing
> at the moment, so maybe you could update us?
Ack, I forgot all about this (and despite recommending the script to
someone on the lists a couple weeks ago)! The script Doug's referring
to is available below, and should be placed into /usr/local/etc/rc.d (be
sure to chmod 755/555 it as well):
http://jdc.parodius.com/freebsd/netwait
Example usage in /etc/rc.conf:
netwait_enable="yes"
netwait_ip="4.2.2.1 4.2.2.2"
netwait_if="em0"
netwait_timeout="15"
This version lacks some of Doug's recommended changes (some minor syntax
changes and a more realtime indicator of what's going on by printing
dots/periods) -- I'll dig up Doug's Email from a while back and make
some time to implement his recommendations.
The idea in the long-run is to get this script committed to the base
system (e.g. /etc/rc.d), have rc.conf(5) updated to mention the
variables, in addition to src/etc/defaults/rc.conf.
Furthermore, I should probably file a PR for all of this...
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. PGP: 4BD6C0CB |
More information about the freebsd-rc
mailing list