• Martin Mareš's avatar
    Rewrote fib functions to make them insert/delete/asynchronous-walk safe. · 3ab001b9
    Martin Mareš authored
    This is implemented in a way similar to lib/slists.h, but it took some
    more effort to make rehashing not disturb the readers. We do it by just
    taking _highest_ k bits of ipa_hash as our hash value and sorting each
    box by whole ipa_hash().
    
    Consult FIB_ITERATE_* macros in nest/route.h.
    
    Implemented fib_check() debugging function and also rewrote the rehashing
    algorithm to use better thresholds and not to waste time by rehashing
    forth and back.
    3ab001b9