• Wei Wang's avatar
    ipv6: hook up exception table to store dst cache · 2b760fcf
    Wei Wang authored
    This commit makes use of the exception hash table implementation to
    store dst caches created by pmtu discovery and ip redirect into the hash
    table under the rt_info and no longer inserts these routes into fib6
    tree.
    This makes the fib6 tree only contain static configured routes and could
    now be protected by rcu instead of a rw lock.
    With this change, in the route lookup related functions, after finding
    the rt6_info with the longest prefix, we also need to search for the
    exception table before doing backtracking.
    In the route delete function, if the route being deleted is not a dst
    cache, deletion of this route also need to flush the whole hash table
    under it. If it is a dst cache, then only delete the cached dst in the
    hash table.
    
    Note: for fib6_walk_continue() function, w->root now is always pointing
    to a root node considering that fib6_prune_clones() is removed from the
    code. So we add a WARN_ON() msg to make sure w->root always points to a
    root node and also removed the update of w->root in fib6_repair_tree().
    This is a prerequisite for later patch because we don't need to make
    w->root as rcu protected when replacing rwlock with RCU.
    Also, we remove all prune related variables as it is no longer used.
    Signed-off-by: default avatarWei Wang <weiwan@google.com>
    Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2b760fcf
ip6_fib.c 48.2 KB