diff options
author | Neale Ranns <nranns@cisco.com> | 2017-01-04 12:41:21 +0000 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2017-01-04 18:36:46 +0000 |
commit | 235c64f0678165a2cddee67514052d4bc2bedadb (patch) | |
tree | 19eae04018625c1dd7e16a9e6d89f4ca3186ebf7 /vnet/vnet/fib/fib_path_list.c | |
parent | cdffe06bab14069ec031b208f9173f317f2c6874 (diff) |
FIB memory leaks (VPP-578)v17.01-rc2
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>
Diffstat (limited to 'vnet/vnet/fib/fib_path_list.c')
-rw-r--r-- | vnet/vnet/fib/fib_path_list.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/vnet/vnet/fib/fib_path_list.c b/vnet/vnet/fib/fib_path_list.c index 5b35e9b87e7..db9d1af9e3f 100644 --- a/vnet/vnet/fib/fib_path_list.c +++ b/vnet/vnet/fib/fib_path_list.c @@ -365,10 +365,10 @@ fib_path_list_mk_lb (fib_path_list_t *path_list, fib_forward_chain_type_t fct, dpo_id_t *dpo) { - load_balance_path_t *hash_key; + load_balance_path_t *nhs; fib_node_index_t *path_index; - hash_key = NULL; + nhs = NULL; if (!dpo_id_is_valid(dpo)) { @@ -388,21 +388,20 @@ fib_path_list_mk_lb (fib_path_list_t *path_list, */ vec_foreach (path_index, path_list->fpl_paths) { - hash_key = fib_path_append_nh_for_multipath_hash( - *path_index, - fct, - hash_key); + nhs = fib_path_append_nh_for_multipath_hash(*path_index, + fct, + nhs); } /* * Path-list load-balances, which if used, would be shared and hence * never need a load-balance map. */ - load_balance_multipath_update(dpo, hash_key, LOAD_BALANCE_FLAG_NONE); + load_balance_multipath_update(dpo, nhs, LOAD_BALANCE_FLAG_NONE); FIB_PATH_LIST_DBG(path_list, "mk lb: %d", dpo->dpoi_index); - vec_free(hash_key); + vec_free(nhs); } /** @@ -592,6 +591,17 @@ fib_path_list_resolve (fib_path_list_t *path_list) } u32 +fib_path_list_get_n_paths (fib_node_index_t path_list_index) +{ + fib_path_list_t *path_list; + + path_list = fib_path_list_get(path_list_index); + + return (vec_len(path_list->fpl_paths)); +} + + +u32 fib_path_list_get_resolving_interface (fib_node_index_t path_list_index) { fib_node_index_t *path_index; |