Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
vppinfra: remove the historical mheap memory allocator
[vpp.git]
/
src
/
vnet
/
fib
/
ip4_fib.c
diff --git
a/src/vnet/fib/ip4_fib.c
b/src/vnet/fib/ip4_fib.c
index
57fc23b
..
29d121c
100644
(file)
--- a/
src/vnet/fib/ip4_fib.c
+++ b/
src/vnet/fib/ip4_fib.c
@@
-18,7
+18,7
@@
#include <vnet/fib/ip4_fib.h>
/*
#include <vnet/fib/ip4_fib.h>
/*
- * A table of pefixes to be added to tables and the sources for them
+ * A table of p
r
efixes to be added to tables and the sources for them
*/
typedef struct ip4_fib_table_special_prefix_t_ {
fib_prefix_t ift_prefix;
*/
typedef struct ip4_fib_table_special_prefix_t_ {
fib_prefix_t ift_prefix;
@@
-129,7
+129,7
@@
ip4_create_fib_with_table_id (u32 table_id,
v4_fib->table_id =
table_id;
fib_table->ft_flow_hash_config = IP_FLOW_HASH_DEFAULT;
v4_fib->table_id =
table_id;
fib_table->ft_flow_hash_config = IP_FLOW_HASH_DEFAULT;
-
+
fib_table_lock(fib_table->ft_index, FIB_PROTOCOL_IP4, src);
ip4_mtrie_init(&v4_fib->mtrie);
fib_table_lock(fib_table->ft_index, FIB_PROTOCOL_IP4, src);
ip4_mtrie_init(&v4_fib->mtrie);
@@
-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);
{
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;
/*
int ii;
/*
@@
-181,10
+182,14
@@
ip4_fib_table_destroy (u32 fib_index)
/*
* validate no more routes.
*/
/*
* 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)
}
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);
}
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);
ip4_mtrie_free(&v4_fib->mtrie);
pool_put(ip4_main.v4_fibs, v4_fib);
@@
-363,7
+369,7
@@
ip4_fib_table_entry_remove (ip4_fib_t *fib,
* removing a non-existent entry. i'll allow it.
*/
}
* removing a non-existent entry. i'll allow it.
*/
}
- else
+ else
{
uword *old_heap;
{
uword *old_heap;
@@
-435,7
+441,7
@@
ip4_fib_table_sub_tree_walk (ip4_fib_t *fib,
int i;
/*
int i;
/*
- * There is no efficent way to walk this array of hash tables.
+ * There is no effic
i
ent 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.
*/
* 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.
*/
@@
-553,7
+559,7
@@
ip4_fib_table_show_one (ip4_fib_t *fib,
ip4_address_t *address,
u32 mask_len,
int detail)
ip4_address_t *address,
u32 mask_len,
int detail)
-{
+{
vlib_cli_output(vm, "%U",
format_fib_entry,
ip4_fib_table_lookup(fib, address, mask_len),
vlib_cli_output(vm, "%U",
format_fib_entry,
ip4_fib_table_lookup(fib, address, mask_len),
@@
-565,19
+571,10
@@
ip4_fib_table_show_one (ip4_fib_t *fib,
u8 *
format_ip4_fib_table_memory (u8 * s, va_list * args)
{
u8 *
format_ip4_fib_table_memory (u8 * s, va_list * args)
{
-#if USE_DLMALLOC == 0
- s = format(s, "%=30s %=6d %=8ld\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));
"IPv4 unicast",
pool_elts(ip4_main.fibs),
mspace_footprint(ip4_main.mtrie_mheap));
-#endif
-
-
return (s);
}
return (s);
}
@@
-671,13
+668,15
@@
ip4_show_fib (vlib_main_t * vm,
continue;
}
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,
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])
{
{
if (0 != fib_table->ft_locks[source])
{