[radvd-devel-l] radvd crash with multiple interfaces when 1 interface comes back up
Reuben Hawkins
reubenhwk at gmail.com
Mon May 10 14:05:00 EDT 2010
Hi Pekka,
I realized after my last email I had no calls to stop_adverts. The attached
diff can be applied to my code.
Thanks,
Reuben
On Mon, May 10, 2010 at 10:46 AM, Reuben Hawkins <reubenhwk at gmail.com>wrote:
> Hi Pekka,
>
> Attached is timerless code. Rather than blocking for mdelay, RAs are
> simply scheduled in a task queue to be sent at the correct time. Care is
> taken to keep someone from remotely flooding the task queue.
>
> Main changes:
> * no timers/no race conditions
> * task queue queues up scheduled RAs (Unicast and Multicast)
> * main loop has a 'pulse' which checks if interfaces have gone up/down and
> automatically revives up'ed interfaces and schedules init RA's on them.
> * Ignore RA checking if the RA originated locally (RFC says check RA's from
> "other" routers)
>
> Minor changes:
> * sock isn't passed to functions as it's already global
> * adding source/dest address to logging info where interesting
> * removed whitespaces at the end of lines
>
> Let me know if anything is missing so I can fix.
>
> Thanks,
> Reuben
>
> On Wed, May 5, 2010 at 10:26 PM, Reuben Hawkins <reubenhwk at gmail.com>wrote:
>
>> I'll try over the next week or so to submit timerless code which honours
>> the delay...
>>
>> Thanks,
>> Reuben
>>
>> On Wed, May 5, 2010 at 9:40 PM, Pekka Savola <pekkas at netcore.fi> wrote:
>>
>>> On Wed, 5 May 2010, Reuben Hawkins wrote:
>>>
>>>> This is happening in the latest from CVS in the timer code? Can you
>>>> reproduce this crash in the code I submitted which removes the
>>>> timers? It seems like the timers are the source of half the problems
>>>> submitted to the mailing list. I stand by removing the
>>>> timers. Building a poll/select based solution will dramatically
>>>> simplify the code and debugging. Please let me know what
>>>> guidelines I should follow to get my code integrated into the next
>>>> version...
>>>>
>>>
>>> Yes, this happens with the latest CVS. I have not tried reproducing with
>>> polling based mechanism, but I don't think it would exist there.
>>>
>>> I agree that timers are causing problems (and likely continue to do so),
>>> and we would be better off without them, or by implementing better locking
>>> when using them (anyone interested in looking at this?).
>>>
>>> In order for select/poll-based mechanism to be considered, it would need
>>> to support all MUSTs from the spec and preferably SHOULDs also. I recall
>>> there was some discussion about this late last year, e.g. relating to random
>>> delay feature.
>>>
>>> --
>>> Pekka Savola "You each name yourselves king, yet the
>>> Netcore Oy kingdom bleeds."
>>> Systems. Networks. Security. -- George R.R. Martin: A Clash of Kings
>>> --
>>> radvd-devel-l mailing list : radvd-devel-l at litech.org
>>> http://lists.litech.org/listinfo/radvd-devel-l
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.litech.org/pipermail/radvd-devel-l/attachments/20100510/fca91a2c/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: stop_adverts.diff
Type: application/octet-stream
Size: 226 bytes
Desc: not available
URL: <http://lists.litech.org/pipermail/radvd-devel-l/attachments/20100510/fca91a2c/attachment.obj>
More information about the radvd-devel-l
mailing list