refactor: use session_manager_discard_session() instead of session_set_discard()
This commit is contained in:
@@ -135,7 +135,6 @@ uint64_t session_get_id(const struct session *sess);
|
|||||||
uint64_t session_get_timestamp(const struct session *sess, enum session_timestamp type);
|
uint64_t session_get_timestamp(const struct session *sess, enum session_timestamp type);
|
||||||
uint64_t session_get_stat(const struct session *sess, enum flow_type type, enum session_stat stat);
|
uint64_t session_get_stat(const struct session *sess, enum flow_type type, enum session_stat stat);
|
||||||
const char *session_get_readable_addr(const struct session *sess);
|
const char *session_get_readable_addr(const struct session *sess);
|
||||||
void session_set_discard(struct session *sess);
|
|
||||||
void session_set_exdata(struct session *sess, int idx, void *ex_ptr);
|
void session_set_exdata(struct session *sess, int idx, void *ex_ptr);
|
||||||
void *session_get_exdata(const struct session *sess, int idx);
|
void *session_get_exdata(const struct session *sess, int idx);
|
||||||
|
|
||||||
@@ -145,6 +144,7 @@ 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);
|
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_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 *session_manager_lookup_session_by_id(struct session_manager *sess_mgr, uint16_t thread_id, uint64_t sess_id);
|
||||||
|
void session_manager_discard_session(struct session_manager *sess_mgr, uint16_t thread_id, struct session *sess);
|
||||||
|
|
||||||
void session_manager_on_packet_forward(struct packet *pkt, struct module *mod);
|
void session_manager_on_packet_forward(struct packet *pkt, struct module *mod);
|
||||||
void session_manager_on_packet_output(struct packet *pkt, struct module *mod);
|
void session_manager_on_packet_output(struct packet *pkt, struct module *mod);
|
||||||
|
|||||||
@@ -68,7 +68,6 @@ struct session
|
|||||||
enum session_type sess_type;
|
enum session_type sess_type;
|
||||||
enum session_state state;
|
enum session_state state;
|
||||||
enum closing_reason reason;
|
enum closing_reason reason;
|
||||||
struct session_manager_rte *sess_mgr_rte;
|
|
||||||
struct session_manager_stat *sess_mgr_stat;
|
struct session_manager_stat *sess_mgr_stat;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
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)
|
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);
|
return (struct session *)packet_get_exdata(pkt, sess_mgr->pkt_ex_to_get_sess);
|
||||||
|
|||||||
@@ -32,7 +32,10 @@ struct session_manager_rte
|
|||||||
struct session_manager_cfg cfg;
|
struct session_manager_cfg cfg;
|
||||||
struct session_manager_stat stat;
|
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;
|
uint64_t now_ms;
|
||||||
struct snowflake *sf;
|
struct snowflake *sf;
|
||||||
};
|
};
|
||||||
@@ -587,7 +590,6 @@ static struct session *session_manager_rte_new_tcp_session(struct session_manage
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
session_init(sess);
|
session_init(sess);
|
||||||
sess->sess_mgr_rte = sess_mgr_rte;
|
|
||||||
sess->sess_mgr_stat = &sess_mgr_rte->stat;
|
sess->sess_mgr_stat = &sess_mgr_rte->stat;
|
||||||
|
|
||||||
enum session_state next_state = session_transition_run(SESSION_STATE_INIT, TCP_SYN);
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
session_init(sess);
|
session_init(sess);
|
||||||
sess->sess_mgr_rte = sess_mgr_rte;
|
|
||||||
sess->sess_mgr_stat = &sess_mgr_rte->stat;
|
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));
|
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;
|
return mached_sess_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_manager_rte_record_duplicated_packet(struct session_manager_rte *sess_mgr_rte, const struct packet *pkt)
|
void session_manager_rte_discard_session(struct session_manager_rte *sess_mgr_rte, struct session *sess)
|
||||||
{
|
{
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
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_type type = session_get_type(sess);
|
||||||
enum session_state curr_state = session_get_current_state(sess);
|
enum session_state curr_state = session_get_current_state(sess);
|
||||||
enum session_state next_state = session_transition_run(curr_state, USER_CLOSE);
|
enum session_state next_state = session_transition_run(curr_state, USER_CLOSE);
|
||||||
@@ -1197,3 +1184,16 @@ void session_set_discard(struct session *sess)
|
|||||||
break;
|
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;
|
||||||
|
}
|
||||||
@@ -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);
|
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);
|
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);
|
void session_manager_rte_record_duplicated_packet(struct session_manager_rte *sess_mgr_rte, const struct packet *pkt);
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ global:
|
|||||||
session_get_timestamp;
|
session_get_timestamp;
|
||||||
session_get_stat;
|
session_get_stat;
|
||||||
session_get_readable_addr;
|
session_get_readable_addr;
|
||||||
session_set_discard;
|
|
||||||
session_get_exdata;
|
session_get_exdata;
|
||||||
session_set_exdata;
|
session_set_exdata;
|
||||||
|
|
||||||
@@ -58,6 +57,7 @@ global:
|
|||||||
session_manager_new_session_exdata_index;
|
session_manager_new_session_exdata_index;
|
||||||
session_manager_lookup_session_by_packet;
|
session_manager_lookup_session_by_packet;
|
||||||
session_manager_lookup_session_by_id;
|
session_manager_lookup_session_by_id;
|
||||||
|
session_manager_discard_session;
|
||||||
packet_exdata_to_session;
|
packet_exdata_to_session;
|
||||||
packet_exdata_to_tcp_segment;
|
packet_exdata_to_tcp_segment;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user