diff options
| author | luwenpeng <[email protected]> | 2024-11-19 18:35:40 +0800 |
|---|---|---|
| committer | luwenpeng <[email protected]> | 2024-11-19 18:54:04 +0800 |
| commit | b76949b0e4820d4136ad86cdf342964fc879ab60 (patch) | |
| tree | 9dc6ed4923d137f1b0acc54341119e5e9f9fe9fb | |
| parent | c2e9275a9e56f7d0567fc2512d5cab67932d39da (diff) | |
export symbol session_manager_lookup_session_by_packet/id()
| -rw-r--r-- | include/stellar/session.h | 2 | ||||
| -rw-r--r-- | infra/session_manager/session_manager.c | 30 | ||||
| -rw-r--r-- | 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; |
