From 5384cca85573f553452254abc888f0153a26c15e Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Thu, 20 Jan 2022 18:10:26 -0800 Subject: session: update time for list of subscribers Instead of constantly scanning all transport vfts for update time functions, build list at transport enable time. Type: improvement Signed-off-by: Florin Coras Change-Id: Id5c07cc03ee1fdd072ebbbd40119d1a440a5e3b1 --- src/vnet/session/session.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/vnet/session/session.c') diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index 77259ad76d3..42f24d2fb21 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -1768,6 +1768,39 @@ session_register_transport (transport_proto_t transport_proto, session_tx_fns[vft->transport_options.tx_type]; } +void +session_register_update_time_fn (session_update_time_fn fn, u8 is_add) +{ + session_main_t *smm = &session_main; + session_update_time_fn *fi; + u32 fi_pos = ~0; + u8 found = 0; + + vec_foreach (fi, smm->update_time_fns) + { + if (*fi == fn) + { + fi_pos = fi - smm->update_time_fns; + found = 1; + break; + } + } + + if (is_add) + { + if (found) + { + clib_warning ("update time fn %p already registered", fn); + return; + } + vec_add1 (smm->update_time_fns, fn); + } + else + { + vec_del1 (smm->update_time_fns, fi_pos); + } +} + transport_proto_t session_add_transport_proto (void) { -- cgit 1.2.3-korg