Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Feb 2012 14:08:56 -0700 (MST)
From:      Warren Block <wblock@wonkity.com>
To:        Ian Lepore <freebsd@damnhippie.dyndns.org>
Cc:        freebsd-rc@freebsd.org
Subject:   Re: dhclient SYNCDHCP messiness
Message-ID:  <alpine.BSF.2.00.1202221348360.79830@wonkity.com>
In-Reply-To: <1329938748.21804.8.camel@revolution.hippie.lan>
References:  <alpine.BSF.2.00.1202220923030.77675@wonkity.com> <1329938748.21804.8.camel@revolution.hippie.lan>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 22 Feb 2012, Ian Lepore wrote:

> On Wed, 2012-02-22 at 11:40 -0700, Warren Block wrote:
>> In /etc/rc.conf:
>>
>>    ifconfig_em0="SYNCDHCP"
>>
>> dhclient runs on startup, then later tries to run again:
>>
>>    Starting dhclient.
>>    em0: no link ...
>>    .
>>    .
>>    got link
>>    (...)
>>    Starting Network: lo0 em0.
>>    (...)
>>    Starting devd.
>>    Starting ums0 moused
>>    .
>>    dhclient already running? (pid=344).
>>    Creating and/or trimming log files
>>
>> So is this from /etc/network.subr starting dhclient because the
>> interface is set to DHCP, then /etc/rc.d/dhclient running directly
>> later?
>>
>> This is with
>>
>> FreeBSD lightning 8.3-PRERELEASE FreeBSD 8.3-PRERELEASE #0: Tue Feb 21 22:25:30 MST 2012
>> root@lightning:/usr/obj/usr/src/sys/LIGHTNING  i386
>
> From the sequence of things there it looks like the second invocation
> may be from a devd rule, but I thought all the standard rules used
> "dhclient quietstart" and that one of the effects of that was to supress
> the "already running" warning.

The devd rule triggers on a link up event.  This is an em(4) card that 
does not do the multiple up/down events on start like an re(4) card. 
But easy to test.  ...And interestingly enough, commenting out lines 
51-56 of devd.conf stops the double call:

   DHCPREQUEST on em0 to 255.255.255.255 port 67
   DHCPACK from 10.0.0.1
   bound to 10.0.0.8 -- renewal in 300 seconds.
   Starting Network: lo0 em0.
   lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
           options=3<RXCSUM,TXCSUM>
           inet 127.0.0.1 netmask 0xff000000
   em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9216
           options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
           ether 00:02:b3:a9:93:d7
           inet 10.0.0.8 netmask 0xffffff00 broadcast 10.0.0.255
           media: Ethernet autoselect (1000baseT <full-duplex>)
           status: active
   Starting devd.
   Starting ums0 moused
   .
   Creating and/or trimming log files

For completeness, there's an unconnected re(4) card built into the 
motherboard that shows "re0: link state changed to DOWN" immediately 
after the "Starting devd." message.

AFAIK, it should happen like this:

ifconfig em0
em0 changes to up
dhclient em0 (sync)
wait until em0 gets a DHCP lease or fails
devd (em0 is already up, devd should do nothing)

So I guess the question is: why is devd seeing a link up event there?

> I updated a couple systems to 8.3-{PRERELEASE,BETA1} over the past few
> days and I haven't seen such a glitch.  I don't think it should make a
> difference, but I use synchronous_dhclient=YES and ifconfig_foo=DHCP

That's a good point: testing... nope, it does the same thing as 
"SYNCDHCP".





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1202221348360.79830>