[ECOS] Re: RedBoot DHCP failure due to race condition.

Grant Edwards grant.b.edwards@gmail.com
Fri Mar 18 10:44:00 GMT 2011

On 2011-03-17, Tarmo Kuuse <tarmo.kuuse@mail.ee> wrote:
> On 17.03.2011 16:23, Grant Edwards wrote:
>> On 2011-03-16, Grant Edwards<grant.b.edwards@gmail.com>  wrote:
>>> We've been having intermittent problems with RedBoot's DHCP client
>>> failing to acquire an address.  I've tracked it down to what looks
>>> like a race condition in RedBoot's DHCP code.
>> Apart from the race condition that's overwriting the saved bp_info
>> struct, I'm a little baffled by the "retry" counter in
>> __bootp_find_local_ip.  It doesn't appear to count attempts to get an
>> IP address.  It appears to count passes through the foreground state
>> machine loop.  It takes 3 passes through that loop to obtain an IP
>> address via DHCP.
>> Can somebody explain how the retry counter is supposed to work?
>  From what I have understood there are two levels of retires in DHCP client.
> 1. Higher level retry involves the common timeout that increases
>    twofold with each failure - 2, 4, 8, ... seconds. Some
>    pseudo-randomness (+/- 3 seconds IIRC) is added the timeout.

I don't see anything like that in the source code I'm looking at.

> 2. Lower level retry is applied to each high level retry attempt. It 
>    sends the DHCPDISCOVER three times in quick succession (approx
>    100-200 ms pseudo-random timeout period).

I don't see anything like that either.

RETRY_TIME is 2000ms. It never changes, and that timeout covers the
entire transaction from beginning to end.

> Second retry is nonsense, I disabled it. All DHCP servers that I have 
> met check if the IP address is available using ARP query. This has a 
> timeout of 1 second so there is no point in spamming DHCPDISCOVER 
> messages several times per second. All it creates is three pairs of 
> DHCPDISCOVER and DHCPOFFER packages which potentially muck up the client 
> state machine and create network traffic.

I don't think we're talking about the same piece of code.  I'm talking
about what's in packages/redboot/current/src/net/bootp.c

Grant Edwards               grant.b.edwards        Yow! Should I do my BOBBIE
                                  at               VINTON medley?

Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

More information about the Ecos-discuss mailing list