Ctrl-c abort of dhclient during rc.d start aborts all network configuration

Brooks Davis brooks at one-eyed-alien.net
Wed Aug 31 21:05:08 GMT 2005


On Wed, Aug 31, 2005 at 09:42:58PM +0100, Robert Watson wrote:
> 
> On Wed, 31 Aug 2005, Brooks Davis wrote:
> 
> >The wait should be 10 seconds plus some startup time.
> 
> It seemed a bit longer, but maybe I was counting fast.  I'll time it next 
> time and see if there's more going on there.

It seems longer, but here's what I got with a quick trial:

# time dhclient em0
em0: no link .............. giving up
       11.05 real         0.00 user         0.01 sys

> >>(1) It would be good to configure lo0 first.
> >
> >Interfaces are configured in order of index by default.  If lo0 were 
> >attached sooner, it would be configured sooner.  I'm somewhat tempted to 
> >change it from it's current (apparently bogus) position in the startup 
> >process at SI_SUB_PROTO_IFATTACHDOMAIN to SI_SUB_INIT_IF/SI_ORDER_ANY 
> >and push the l2com attachments from SI_ORDER_ANY to SI_ORDER_MIDDLE. 
> >Strictly speaking I think lo(4) should be SI_SUB_PSEUDO, but moving it 
> >up so it attached first makes some sense given how critical it is.
> >
> >Alternativly, one could add code to sort the result of "ifconfig -l" to 
> >configure lo0 first.
> 
> I wonder if we could sed out lo0 from the automatic list and just 
> configure it first by fiat?  While if_loop is in theory optional, it turns 
> out not to be very practical using our default boot scripts (since many 
> tools assume you can bind 0.0.0.0).

That's probably a good idea though we don't have sed yet at this point
in the process.  I believe in practice, if you have either INET or INET6
compiled in and don't load lo you'll panic in the routing code.

> >>(2) If a dhclient is ctrl-c'd, it would be nice if the rest of the network
> >>    configuration continued.
> >
> >I don't see any code in the startup scripts that would cause them to 
> >exit on failure so the issue is probalby that the signal is being 
> >delivered to the /etc/rc.d/netif instance.  I don't really know what the 
> >solution to that is.
> 
> Me neither.  All I know is that I don't remember seeing this before.

I think I'll add a "trap : 3" like fsck has.

> >>The printing of '.'s in dhclient is also a bit excessive.
> >
> >Hanging with no output seems even less unhelpful. :( Longer term I want 
> >to get rid of syncronous calls to dhclient in the startup process, but I 
> >haven't had time to work on it and IMO, it's a bit late in the game for 
> >6.0.
> 
> I thought a bit about this, but concluded that we probably still have 
> components that assume a one IP (no more, no less) world, and slide by now 
> due to luck.  A gradual conversion towards the assumptions of changing IPs 
> has been happening over time (vis natd -dynamic), but perhaps we need to 
> accelerate it some by forcing the issue in 7.x after 6.0 gets out the 
> door?

I definitely think this is something we need to work on for 7.x.
Fortunately, I think Apple has probably shaken out the bugs in the big
applications like bind and apache since they have a nice, dynamic
interface configuration process.

-- Brooks


More information about the freebsd-current mailing list