Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
ip: Protocol Independent IP Neighbors
[vpp.git]
/
src
/
vnet
/
fib
/
ip6_fib.c
diff --git
a/src/vnet/fib/ip6_fib.c
b/src/vnet/fib/ip6_fib.c
index
cecfcbd
..
784f52c
100644
(file)
--- a/
src/vnet/fib/ip6_fib.c
+++ b/
src/vnet/fib/ip6_fib.c
@@
-151,11
+151,15
@@
ip6_fib_table_destroy (u32 fib_index)
fib_table_t *fib_table = fib_table_get(fib_index, FIB_PROTOCOL_IP6);
fib_source_t source;
fib_table_t *fib_table = fib_table_get(fib_index, FIB_PROTOCOL_IP6);
fib_source_t source;
-
/*
+ /*
* validate no more routes.
*/
* validate no more routes.
*/
- ASSERT(0 == fib_table->ft_total_route_counts);
- FOR_EACH_FIB_SOURCE(source)
+#ifdef CLIB_DEBUG
+ if (0 != fib_table->ft_total_route_counts)
+ fib_table_assert_empty(fib_table);
+#endif
+
+ vec_foreach_index(source, fib_table->ft_src_route_counts)
{
ASSERT(0 == fib_table->ft_src_route_counts[source]);
}
{
ASSERT(0 == fib_table->ft_src_route_counts[source]);
}
@@
-164,6
+168,7
@@
ip6_fib_table_destroy (u32 fib_index)
{
hash_unset (ip6_main.fib_index_by_table_id, fib_table->ft_table_id);
}
{
hash_unset (ip6_main.fib_index_by_table_id, fib_table->ft_table_id);
}
+ vec_free(fib_table->ft_src_route_counts);
pool_put_index(ip6_main.v6_fibs, fib_table->ft_index);
pool_put(ip6_main.fibs, fib_table);
}
pool_put_index(ip6_main.v6_fibs, fib_table->ft_index);
pool_put(ip6_main.fibs, fib_table);
}
@@
-588,7
+593,7
@@
typedef struct {
u64 count_by_prefix_length[129];
} count_routes_in_fib_at_prefix_length_arg_t;
u64 count_by_prefix_length[129];
} count_routes_in_fib_at_prefix_length_arg_t;
-static
void
+static
int
count_routes_in_fib_at_prefix_length (clib_bihash_kv_24_8_t * kvp,
void *arg)
{
count_routes_in_fib_at_prefix_length (clib_bihash_kv_24_8_t * kvp,
void *arg)
{
@@
-596,11
+601,13
@@
count_routes_in_fib_at_prefix_length (clib_bihash_kv_24_8_t * kvp,
int mask_width;
if ((kvp->key[2]>>32) != ap->fib_index)
int mask_width;
if ((kvp->key[2]>>32) != ap->fib_index)
-
return
;
+
return (BIHASH_WALK_CONTINUE)
;
mask_width = kvp->key[2] & 0xFF;
ap->count_by_prefix_length[mask_width]++;
mask_width = kvp->key[2] & 0xFF;
ap->count_by_prefix_length[mask_width]++;
+
+ return (BIHASH_WALK_CONTINUE);
}
static clib_error_t *
}
static clib_error_t *
@@
-679,13
+686,16
@@
ip6_show_fib (vlib_main_t * vm,
if (fib_table->ft_flags & FIB_TABLE_FLAG_IP6_LL)
continue;
if (fib_table->ft_flags & FIB_TABLE_FLAG_IP6_LL)
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_IP6,
fib->index,
format_ip_flow_hash_config,
format_fib_table_name, fib->index,
FIB_PROTOCOL_IP6,
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])
{