Date: Wed, 29 Sep 2010 00:46:28 -0700 From: Jeremy Chadwick <freebsd@jdc.parodius.com> To: Doug Barton <dougb@FreeBSD.org> Cc: freebsd-rc@freebsd.org Subject: Re: Wait for carrier in /etc/rc.d/defaultroute Message-ID: <20100929074628.GA83194@icarus.home.lan> In-Reply-To: <4CA15FC8.8010106@FreeBSD.org> References: <20100925000435.GA62501@sandvine.com> <4CA15FC8.8010106@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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@parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP: 4BD6C0CB |
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100929074628.GA83194>