diff options
author | Neale Ranns <neale.ranns@cisco.com> | 2017-01-05 01:01:47 -0800 |
---|---|---|
committer | John Lo <loj@cisco.com> | 2017-01-05 15:10:05 +0000 |
commit | c0790cfef0bd1c56f4c75dc4f959584148386258 (patch) | |
tree | 08abc77cb599b15f1ea9d80bdf44bf14855a1360 /src/vnet/fib/fib_entry_src.c | |
parent | ce1aae4e88d8ed2c73e8213115cf9f3a4e37370f (diff) |
FIB memory leaks (VPP-578)
1) vec_free the fe_srcs of a fib_entry_t when the fib_entry_t is itself reed
2) in the load-balance fixup if a drop path is required add this to a new vector of next-hops 'fixed_nhs'. This vector is managed by the load-balance function. The caller continues to manage its own set. The function is now const implying that the caller is safe to assume the next-hops do not change.
Change-Id: I0f29203ee16b9a270f40edf237488fa99ba65320
Signed-off-by: Neale Ranns <nranns@cisco.com>
Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
Diffstat (limited to 'src/vnet/fib/fib_entry_src.c')
-rw-r--r-- | src/vnet/fib/fib_entry_src.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/vnet/fib/fib_entry_src.c b/src/vnet/fib/fib_entry_src.c index 060fac941d2..1fb040608b4 100644 --- a/src/vnet/fib/fib_entry_src.c +++ b/src/vnet/fib/fib_entry_src.c @@ -382,6 +382,14 @@ fib_entry_src_mk_lb (fib_entry_t *fib_entry, .fct = fct, }; + /* + * As an optimisation we allocate the vector of next-hops to be sized + * equal to the maximum nuber of paths we will need, which is also the + * most likely number we will need, since in most cases the paths are 'up'. + */ + vec_validate(ctx.next_hops, fib_path_list_get_n_paths(esrc->fes_pl)); + vec_reset_length(ctx.next_hops); + lb_proto = fib_proto_to_dpo(fib_entry->fe_prefix.fp_proto); fib_path_list_walk(esrc->fes_pl, |