diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/vnet/fib/fib_path_list.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/vnet/fib/fib_path_list.c b/src/vnet/fib/fib_path_list.c index df08bb2b0d0..81751695f47 100644 --- a/src/vnet/fib/fib_path_list.c +++ b/src/vnet/fib/fib_path_list.c @@ -1297,22 +1297,15 @@ fib_path_list_child_add (fib_node_index_t path_list_index, fib_node_type_t child_type, fib_node_index_t child_index) { - u32 sibling; - - sibling = fib_node_child_add(FIB_NODE_TYPE_PATH_LIST, - path_list_index, - child_type, - child_index); - - if (FIB_PATH_LIST_POPULAR == fib_node_get_n_children(FIB_NODE_TYPE_PATH_LIST, - path_list_index)) + if (FIB_PATH_LIST_POPULAR - 1 == fib_node_get_n_children(FIB_NODE_TYPE_PATH_LIST, + path_list_index)) { /* * Set the popular flag on the path-list once we pass the magic * threshold. then walk children to update. * We don't undo this action. The rational being that the number * of entries using this prefix is large enough such that it is a - * non-trivial amount of effort to converge them. If we get into the + * non-trival amount of effort to converge them. If we get into the * situation where we are adding and removing entries such that we * flip-flop over the threshold, then this non-trivial work is added * to each of those routes adds/deletes - not a situation we want. @@ -1328,7 +1321,10 @@ fib_path_list_child_add (fib_node_index_t path_list_index, fib_walk_sync(FIB_NODE_TYPE_PATH_LIST, path_list_index, &ctx); } - return (sibling); + return (fib_node_child_add(FIB_NODE_TYPE_PATH_LIST, + path_list_index, + child_type, + child_index)); } void |