fib: recursive calculation leads to delegate pool realloc
Type: fix
Change-Id: Ib7ac53d1b59b641ccd3b1d733107d7f1ba174314
Signed-off-by: Neale Ranns <nranns@cisco.com>
(cherry picked from commit a66020becd
)
This commit is contained in:
@ -470,9 +470,12 @@ fib_entry_contribute_forwarding (fib_node_index_t fib_entry_index,
|
|||||||
|
|
||||||
if (NULL == fed)
|
if (NULL == fed)
|
||||||
{
|
{
|
||||||
fed = fib_entry_delegate_find_or_add(
|
/*
|
||||||
fib_entry,
|
* use a temporary DPO lest the delegate realloc in the recursive
|
||||||
fib_entry_chain_type_to_delegate_type(fct));
|
* calculation.
|
||||||
|
*/
|
||||||
|
dpo_id_t tmp = DPO_INVALID;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* on-demand create eos/non-eos.
|
* on-demand create eos/non-eos.
|
||||||
* There is no on-demand delete because:
|
* There is no on-demand delete because:
|
||||||
@ -483,7 +486,14 @@ fib_entry_contribute_forwarding (fib_node_index_t fib_entry_index,
|
|||||||
fib_entry_src_mk_lb(fib_entry,
|
fib_entry_src_mk_lb(fib_entry,
|
||||||
fib_entry_get_best_src_i(fib_entry),
|
fib_entry_get_best_src_i(fib_entry),
|
||||||
fct,
|
fct,
|
||||||
&fed->fd_dpo);
|
&tmp);
|
||||||
|
|
||||||
|
fed = fib_entry_delegate_find_or_add(
|
||||||
|
fib_entry,
|
||||||
|
fib_entry_chain_type_to_delegate_type(fct));
|
||||||
|
|
||||||
|
dpo_copy(&fed->fd_dpo, &tmp);
|
||||||
|
dpo_reset(&tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
dpo_copy(dpo, &fed->fd_dpo);
|
dpo_copy(dpo, &fed->fd_dpo);
|
||||||
|
Reference in New Issue
Block a user