fib: format deleted LB

This patch allows the formatting of deleted Load-balancer
objects. This is needed in the case a trace references a DPO
that went away in the interim.

Type: improvement

Change-Id: I6d67519b8d62f69aafde3c8fe3065bc85a7adbde
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
This commit is contained in:
Nathan Skrzypczak
2023-12-21 11:35:30 +01:00
parent 70335e8e50
commit f3b0004f8a
2 changed files with 15 additions and 1 deletions

View File

@@ -149,7 +149,13 @@ load_balance_format (index_t lbi,
dpo_id_t *buckets;
u32 i;
lb = load_balance_get(lbi);
lb = load_balance_get_or_null(lbi);
if (lb == NULL)
{
s = format(s, "DELETED lb:%u", lbi);
return (s);
}
vlib_get_combined_counter(&(load_balance_main.lbm_to_counters), lbi, &to);
vlib_get_combined_counter(&(load_balance_main.lbm_via_counters), lbi, &via);
buckets = load_balance_get_buckets(lb);

View File

@@ -232,6 +232,14 @@ load_balance_get (index_t lbi)
return (pool_elt_at_index(load_balance_pool, lbi));
}
static inline load_balance_t *
load_balance_get_or_null (index_t lbi)
{
if (pool_is_free_index (load_balance_pool, lbi))
return 0;
return (pool_elt_at_index (load_balance_pool, lbi));
}
#define LB_HAS_INLINE_BUCKETS(_lb) \
((_lb)->lb_n_buckets <= LB_NUM_INLINE_BUCKETS)