diff options
author | Neale Ranns <nranns@cisco.com> | 2016-10-07 15:14:33 +0100 |
---|---|---|
committer | Damjan Marion <dmarion.lists@gmail.com> | 2016-10-10 18:58:22 +0000 |
commit | 33a7dd5ad9a3d3ecd9bd8472ca20ee5f82ae9542 (patch) | |
tree | 039a067b44b25df78a3aa2d14d4dc558c79dc9d7 /vnet/vnet/fib/fib_path.c | |
parent | bfe737a1b29afea2e10248b8c9fa800148fbd573 (diff) |
FIB2.0: memory leaks during load-balance update (VPP-475)
some other fixes and enhancemets to address failures in the IPv6 Scale testing:
- The rate at which VPP sends ARP/ND requests, 1 per-millisecond, is too high. This is reduced to 1 every 10 ms. probably still too high.
- If an ARP/ND response is received that does not contain a change to the known MAC address, no further processing is done.
- Added stats to get info about the async FIB walks.
- When walking FIB entries and performing a load-balance update, it is not necessary to re-insert the LB in the forwarding table.
Change-Id: Ifd47e4bdbce94495f44aaf1b78e7d1395ed870d1
Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'vnet/vnet/fib/fib_path.c')
-rw-r--r-- | vnet/vnet/fib/fib_path.c | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/vnet/vnet/fib/fib_path.c b/vnet/vnet/fib/fib_path.c index 1b82f46482e..bea17218547 100644 --- a/vnet/vnet/fib/fib_path.c +++ b/vnet/vnet/fib/fib_path.c @@ -1801,13 +1801,36 @@ show_fib_path_command (vlib_main_t * vm, unformat_input_t * input, vlib_cli_command_t * cmd) { + fib_node_index_t pi; fib_path_t *path; - vlib_cli_output (vm, "FIB Path Lists"); - pool_foreach(path, fib_path_pool, - ({ - vlib_cli_output (vm, "%U", format_fib_path, path); - })); + if (unformat (input, "%d", &pi)) + { + /* + * show one in detail + */ + if (!pool_is_free_index(fib_path_pool, pi)) + { + path = fib_path_get(pi); + u8 *s = fib_path_format(pi, NULL); + s = format(s, "children:"); + s = fib_node_children_format(path->fp_node.fn_children, s); + vlib_cli_output (vm, "%s", s); + vec_free(s); + } + else + { + vlib_cli_output (vm, "path %d invalid", pi); + } + } + else + { + vlib_cli_output (vm, "FIB Paths"); + pool_foreach(path, fib_path_pool, + ({ + vlib_cli_output (vm, "%U", format_fib_path, path); + })); + } return (NULL); } |