From b76949b0e4820d4136ad86cdf342964fc879ab60 Mon Sep 17 00:00:00 2001 From: luwenpeng Date: Tue, 19 Nov 2024 18:35:40 +0800 Subject: [PATCH] export symbol session_manager_lookup_session_by_packet/id() --- include/stellar/session.h | 2 ++ infra/session_manager/session_manager.c | 30 +++++++++++++++++++++++-- infra/version.map | 2 ++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/include/stellar/session.h b/include/stellar/session.h index a5dae67..5ada791 100644 --- a/include/stellar/session.h +++ b/include/stellar/session.h @@ -150,6 +150,8 @@ void *session_get_exdata(const struct session *sess, int idx); struct session_manager; struct session_manager *module_to_session_manager(struct module *mod); int session_manager_new_session_exdata_index(struct session_manager *sess_mgr, const char *name, exdata_free *func, void *arg); +struct session *session_manager_lookup_session_by_packet(struct session_manager *sess_mgr, uint16_t thread_id, const struct packet *pkt); +struct session *session_manager_lookup_session_by_id(struct session_manager *sess_mgr, uint16_t thread_id, uint64_t sess_id); struct session *packet_exdata_to_session(struct packet *pkt); diff --git a/infra/session_manager/session_manager.c b/infra/session_manager/session_manager.c index 96d421c..da6935b 100644 --- a/infra/session_manager/session_manager.c +++ b/infra/session_manager/session_manager.c @@ -337,6 +337,26 @@ int session_manager_new_session_exdata_index(struct session_manager *sess_mgr, c return exdata_schema_new_index(sess_mgr->ex_sche, name, func, arg); } +struct session *session_manager_lookup_session_by_packet(struct session_manager *sess_mgr, uint16_t thread_id, const struct packet *pkt) +{ + struct session_manager_rte *rte = session_manager_get_rte(sess_mgr, thread_id); + if (rte == NULL) + { + return NULL; + } + return session_manager_rte_lookup_session_by_packet(rte, pkt); +} + +struct session *session_manager_lookup_session_by_id(struct session_manager *sess_mgr, uint16_t thread_id, uint64_t sess_id) +{ + struct session_manager_rte *rte = session_manager_get_rte(sess_mgr, thread_id); + if (rte == NULL) + { + return NULL; + } + return session_manager_rte_lookup_session_by_id(rte, sess_id); +} + int session_manager_init(struct session_manager *sess_mgr, uint16_t thread_id) { assert(sess_mgr); @@ -462,8 +482,14 @@ void session_manager_on_thread_exit(struct module_manager *mod_mgr, int thread_i struct session_manager_rte *session_manager_get_rte(struct session_manager *sess_mgr, uint16_t thread_id) { assert(sess_mgr); - assert(thread_id < sess_mgr->cfg->thread_num); - return sess_mgr->rte[thread_id]; + if (thread_id < sess_mgr->cfg->thread_num) + { + return sess_mgr->rte[thread_id]; + } + else + { + return NULL; + } } struct session_manager_cfg *session_manager_get_cfg(struct session_manager *sess_mgr) diff --git a/infra/version.map b/infra/version.map index 47a20b9..85ec0ed 100644 --- a/infra/version.map +++ b/infra/version.map @@ -48,6 +48,8 @@ global: session_manager_on_thread_init; session_manager_on_thread_exit; session_manager_new_session_exdata_index; + session_manager_lookup_session_by_packet; + session_manager_lookup_session_by_id; packet_exdata_to_session; session_monitor_on_init;