From f3b0004f8a5de433bf8a601a7e21c7f73b321cee Mon Sep 17 00:00:00 2001 From: Nathan Skrzypczak Date: Thu, 21 Dec 2023 11:35:30 +0100 Subject: 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 --- src/vnet/dpo/load_balance.c | 8 +++++++- src/vnet/dpo/load_balance.h | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src/vnet') diff --git a/src/vnet/dpo/load_balance.c b/src/vnet/dpo/load_balance.c index fae7c1db94a..8f2a0de6ea8 100644 --- a/src/vnet/dpo/load_balance.c +++ b/src/vnet/dpo/load_balance.c @@ -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); diff --git a/src/vnet/dpo/load_balance.h b/src/vnet/dpo/load_balance.h index 3605d82a207..eee073f5892 100644 --- a/src/vnet/dpo/load_balance.h +++ b/src/vnet/dpo/load_balance.h @@ -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) -- cgit 1.2.3-korg