diff options
| author | luwenpeng <[email protected]> | 2024-11-26 11:53:30 +0800 |
|---|---|---|
| committer | luwenpeng <[email protected]> | 2024-11-27 11:43:42 +0800 |
| commit | 1e072950d7477a7154665b46c16e5c890e471cad (patch) | |
| tree | 7fbbe40bbcdcf159338802c0e3def1db0cb5026a /infra/session_manager | |
| parent | 9ba56055b320cf00e5c96370029ec19836075247 (diff) | |
refactor: use session_manager_discard_session() instead of session_set_discard()
Diffstat (limited to 'infra/session_manager')
| -rw-r--r-- | infra/session_manager/session_internal.h | 1 | ||||
| -rw-r--r-- | infra/session_manager/session_manager.c | 10 | ||||
| -rw-r--r-- | infra/session_manager/session_manager_rte.c | 36 | ||||
| -rw-r--r-- | infra/session_manager/session_manager_rte.h | 1 |
4 files changed, 29 insertions, 19 deletions
diff --git a/infra/session_manager/session_internal.h b/infra/session_manager/session_internal.h index ec8a0b8..e6c400b 100644 --- a/infra/session_manager/session_internal.h +++ b/infra/session_manager/session_internal.h @@ -68,7 +68,6 @@ struct session enum session_type sess_type; enum session_state state; enum closing_reason reason; - struct session_manager_rte *sess_mgr_rte; struct session_manager_stat *sess_mgr_stat; }; diff --git a/infra/session_manager/session_manager.c b/infra/session_manager/session_manager.c index 16a8b6a..acf73b0 100644 --- a/infra/session_manager/session_manager.c +++ b/infra/session_manager/session_manager.c @@ -463,6 +463,16 @@ struct session *session_manager_lookup_session_by_id(struct session_manager *ses return session_manager_rte_lookup_session_by_id(rte, sess_id); } +void session_manager_discard_session(struct session_manager *sess_mgr, uint16_t thread_id, struct session *sess) +{ + struct session_manager_rte *rte = session_manager_get_rte(sess_mgr, thread_id); + if (rte == NULL) + { + return; + } + session_manager_rte_discard_session(rte, sess); +} + struct session *packet_exdata_to_session(const struct session_manager *sess_mgr, const struct packet *pkt) { return (struct session *)packet_get_exdata(pkt, sess_mgr->pkt_ex_to_get_sess); diff --git a/infra/session_manager/session_manager_rte.c b/infra/session_manager/session_manager_rte.c index c3eb668..c00b661 100644 --- a/infra/session_manager/session_manager_rte.c +++ b/infra/session_manager/session_manager_rte.c @@ -32,7 +32,10 @@ struct session_manager_rte struct session_manager_cfg cfg; struct session_manager_stat stat; - // only used for session_set_discard() or session_manager_rte_record_duplicated_packet(), because the function is called by plugin and has no time input. + /* + * only used for session_manager_discard_session() or session_manager_rte_record_duplicated_packet(), + * because the function is called by module and has no time input. + */ uint64_t now_ms; struct snowflake *sf; }; @@ -587,7 +590,6 @@ static struct session *session_manager_rte_new_tcp_session(struct session_manage return NULL; } session_init(sess); - sess->sess_mgr_rte = sess_mgr_rte; sess->sess_mgr_stat = &sess_mgr_rte->stat; enum session_state next_state = session_transition_run(SESSION_STATE_INIT, TCP_SYN); @@ -634,7 +636,6 @@ static struct session *session_manager_rte_new_udp_session(struct session_manage return NULL; } session_init(sess); - sess->sess_mgr_rte = sess_mgr_rte; sess->sess_mgr_stat = &sess_mgr_rte->stat; enum flow_type type = identify_flow_type_by_port(ntohs(key->src_port), ntohs(key->dst_port)); @@ -1160,22 +1161,8 @@ uint64_t session_manager_rte_scan_session(struct session_manager_rte *sess_mgr_r return mached_sess_num; } -void session_manager_rte_record_duplicated_packet(struct session_manager_rte *sess_mgr_rte, const struct packet *pkt) -{ - if (sess_mgr_rte->cfg.duplicated_packet_bloom_filter.enable) - { - packet_dabloom_add(sess_mgr_rte->dup_pkt_dab, pkt, sess_mgr_rte->now_ms); - } -} - -struct session_manager_stat *session_manager_rte_get_stat(struct session_manager_rte *sess_mgr_rte) +void session_manager_rte_discard_session(struct session_manager_rte *sess_mgr_rte, struct session *sess) { - return &sess_mgr_rte->stat; -} - -void session_set_discard(struct session *sess) -{ - struct session_manager_rte *sess_mgr_rte = sess->sess_mgr_rte; enum session_type type = session_get_type(sess); enum session_state curr_state = session_get_current_state(sess); enum session_state next_state = session_transition_run(curr_state, USER_CLOSE); @@ -1197,3 +1184,16 @@ void session_set_discard(struct session *sess) break; } } + +void session_manager_rte_record_duplicated_packet(struct session_manager_rte *sess_mgr_rte, const struct packet *pkt) +{ + if (sess_mgr_rte->cfg.duplicated_packet_bloom_filter.enable) + { + packet_dabloom_add(sess_mgr_rte->dup_pkt_dab, pkt, sess_mgr_rte->now_ms); + } +} + +struct session_manager_stat *session_manager_rte_get_stat(struct session_manager_rte *sess_mgr_rte) +{ + return &sess_mgr_rte->stat; +}
\ No newline at end of file diff --git a/infra/session_manager/session_manager_rte.h b/infra/session_manager/session_manager_rte.h index 9a3e9e5..30afd67 100644 --- a/infra/session_manager/session_manager_rte.h +++ b/infra/session_manager/session_manager_rte.h @@ -44,6 +44,7 @@ struct session *session_manager_rte_get_expired_session(struct session_manager_r struct session *session_manager_rte_get_evicted_session(struct session_manager_rte *sess_mgr_rte); uint64_t session_manager_rte_scan_session(struct session_manager_rte *sess_mgr_rte, const struct session_filter *filter, uint64_t mached_sess_id[], uint64_t array_size); +void session_manager_rte_discard_session(struct session_manager_rte *sess_mgr_rte, struct session *sess); void session_manager_rte_record_duplicated_packet(struct session_manager_rte *sess_mgr_rte, const struct packet *pkt); |
