session manager: support session timeouts & tcp dupkt filter & udp eviction filter

This commit is contained in:
luwenpeng
2024-01-17 11:47:55 +08:00
parent 1d4736ac88
commit 4fbafab4e3
20 changed files with 972 additions and 607 deletions

View File

@@ -46,7 +46,7 @@ uint64_t session_get_id(const struct session *sess)
}
// session tuple6
void session_set_tuple6(struct session *sess, struct tuple6 *tuple)
void session_set_tuple6(struct session *sess, const struct tuple6 *tuple)
{
memcpy(&sess->tuple, tuple, sizeof(struct tuple6));
}
@@ -88,6 +88,17 @@ enum session_type session_get_type(const struct session *sess)
return sess->type;
}
// session dup traffic flag
void session_set_dup_traffic_flag(struct session *sess, enum dup_traffic_flag flag)
{
sess->dup_flag = flag;
}
enum dup_traffic_flag session_get_dup_traffic_flag(const struct session *sess)
{
return sess->dup_flag;
}
// closing reasion
void session_set_closing_reasion(struct session *sess, enum closing_reasion reasion)
{
@@ -349,14 +360,14 @@ static void tcp_ex_data_tostring(uint64_t ex_data, char *buffer, size_t buffer_l
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_SYNACK_RECVED ");
}
if (ex_data & TCP_C2S_PAYLOAD_RECVED)
if (ex_data & TCP_C2S_DATA_RECVED)
{
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_C2S_PAYLOAD_RECVED ");
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_C2S_DATA_RECVED ");
}
if (ex_data & TCP_S2C_PAYLOAD_RECVED)
if (ex_data & TCP_S2C_DATA_RECVED)
{
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_S2C_PAYLOAD_RECVED ");
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_S2C_DATA_RECVED ");
}
if (ex_data & TCP_C2S_FIN_RECVED)
@@ -404,17 +415,17 @@ const char *session_closing_reasion_tostring(enum closing_reasion reasion)
switch (reasion)
{
case CLOSING_BY_TIMEOUT:
return "CLOSING_BY_TIMEOUT";
return "closing_by_timeout";
case CLOSING_BY_EVICTED:
return "CLOSING_BY_EVICTED";
return "closing_by_evicted";
case CLOSING_BY_CLIENT_FIN:
return "CLOSING_BY_CLIENT_FIN";
return "closing_by_client_fin";
case CLOSING_BY_CLIENT_RST:
return "CLOSING_BY_CLIENT_RST";
return "closing_by_client_rst";
case CLOSING_BY_SERVER_FIN:
return "CLOSING_BY_SERVER_FIN";
return "closing_by_server_fin";
case CLOSING_BY_SERVER_RST:
return "CLOSING_BY_SERVER_RST";
return "closing_by_server_rst";
default:
return "unknown";
}
@@ -424,8 +435,6 @@ const char *session_state_tostring(enum session_state state)
{
switch (state)
{
case SESSION_STATE_INIT:
return "init";
case SESSION_STATE_OPENING:
return "opening";
case SESSION_STATE_ACTIVE:
@@ -456,8 +465,6 @@ const char *session_dir_tostring(enum session_dir dir)
{
switch (dir)
{
case SESSION_DIR_NONE:
return "none";
case SESSION_DIR_C2S:
return "c2s";
case SESSION_DIR_S2C: