X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ffib%2Fip4_fib.c;h=d4ef698bc9aa4a0eb07fb02374f2fcab4b3ebacc;hb=cbe25aab3be72154f2c706c39eeba6a77f34450f;hp=57fc23b6b19f272d688e589513c6f0d241c32e57;hpb=f324dec0a371431f9326f67e920630579741da3c;p=vpp.git diff --git a/src/vnet/fib/ip4_fib.c b/src/vnet/fib/ip4_fib.c index 57fc23b6b19..d4ef698bc9a 100644 --- a/src/vnet/fib/ip4_fib.c +++ b/src/vnet/fib/ip4_fib.c @@ -18,7 +18,7 @@ #include /* - * A table of pefixes to be added to tables and the sources for them + * A table of prefixes to be added to tables and the sources for them */ typedef struct ip4_fib_table_special_prefix_t_ { fib_prefix_t ift_prefix; @@ -160,6 +160,7 @@ ip4_fib_table_destroy (u32 fib_index) { fib_table_t *fib_table = pool_elt_at_index(ip4_main.fibs, fib_index); ip4_fib_t *v4_fib = pool_elt_at_index(ip4_main.v4_fibs, fib_index); + u32 *n_locks; int ii; /* @@ -181,10 +182,14 @@ ip4_fib_table_destroy (u32 fib_index) /* * validate no more routes. */ - ASSERT(0 == fib_table->ft_total_route_counts); - FOR_EACH_FIB_SOURCE(ii) +#ifdef CLIB_DEBUG + if (0 != fib_table->ft_total_route_counts) + fib_table_assert_empty(fib_table); +#endif + + vec_foreach(n_locks, fib_table->ft_src_route_counts) { - ASSERT(0 == fib_table->ft_src_route_counts[ii]); + ASSERT(0 == *n_locks); } if (~0 != fib_table->ft_table_id) @@ -192,6 +197,7 @@ ip4_fib_table_destroy (u32 fib_index) hash_unset (ip4_main.fib_index_by_table_id, fib_table->ft_table_id); } + vec_free(fib_table->ft_src_route_counts); ip4_mtrie_free(&v4_fib->mtrie); pool_put(ip4_main.v4_fibs, v4_fib); @@ -435,7 +441,7 @@ ip4_fib_table_sub_tree_walk (ip4_fib_t *fib, int i; /* - * There is no efficent way to walk this array of hash tables. + * There is no efficient way to walk this array of hash tables. * so we walk each table with a mask length greater than and equal to * the required root and check it is covered by the root. */ @@ -566,12 +572,12 @@ u8 * format_ip4_fib_table_memory (u8 * s, va_list * args) { #if USE_DLMALLOC == 0 - s = format(s, "%=30s %=6d %=8ld\n", + s = format(s, "%=30s %=6d %=12ld\n", "IPv4 unicast", pool_elts(ip4_main.fibs), mheap_bytes(ip4_main.mtrie_mheap)); #else - s = format(s, "%=30s %=6d %=8ld\n", + s = format(s, "%=30s %=6d %=12ld\n", "IPv4 unicast", pool_elts(ip4_main.fibs), mspace_footprint(ip4_main.mtrie_mheap)); @@ -671,13 +677,15 @@ ip4_show_fib (vlib_main_t * vm, continue; } - s = format(s, "%U, fib_index:%d, flow hash:[%U] locks:[", + s = format(s, "%U, fib_index:%d, flow hash:[%U] epoch:%d flags:%U locks:[", format_fib_table_name, fib->index, FIB_PROTOCOL_IP4, fib->index, format_ip_flow_hash_config, - fib_table->ft_flow_hash_config); - FOR_EACH_FIB_SOURCE(source) + fib_table->ft_flow_hash_config, + fib_table->ft_epoch, + format_fib_table_flags, fib_table->ft_flags); + vec_foreach_index(source, fib_table->ft_locks) { if (0 != fib_table->ft_locks[source]) {