Refactor the session manager using session transformation 2D array & Update test case
This commit is contained in:
@@ -158,28 +158,6 @@ uint64_t session_get_last_time(const struct session *sess)
|
||||
return sess->last_time;
|
||||
}
|
||||
|
||||
// session tcp state
|
||||
void session_set_tcp_state(struct session *sess, enum tcp_state state)
|
||||
{
|
||||
sess->tcp_state = state;
|
||||
}
|
||||
|
||||
enum tcp_state session_get_tcp_state(const struct session *sess)
|
||||
{
|
||||
return sess->tcp_state;
|
||||
}
|
||||
|
||||
// session udp state
|
||||
void session_set_udp_state(struct session *sess, enum udp_state state)
|
||||
{
|
||||
sess->udp_state = state;
|
||||
}
|
||||
|
||||
enum udp_state session_get_udp_state(const struct session *sess)
|
||||
{
|
||||
return sess->udp_state;
|
||||
}
|
||||
|
||||
// session user data
|
||||
void session_set_user_data(struct session *sess, void *user_data)
|
||||
{
|
||||
@@ -197,11 +175,19 @@ void *session_get_user_data(const struct session *sess)
|
||||
|
||||
void session_set_c2s_1st_pkt(struct session *sess, const struct packet *pkt)
|
||||
{
|
||||
if (sess->c2s_1st_pkt)
|
||||
{
|
||||
return;
|
||||
}
|
||||
sess->c2s_1st_pkt = packet_dup(pkt);
|
||||
}
|
||||
|
||||
void session_set_s2c_1st_pkt(struct session *sess, const struct packet *pkt)
|
||||
{
|
||||
if (sess->s2c_1st_pkt)
|
||||
{
|
||||
return;
|
||||
}
|
||||
sess->s2c_1st_pkt = packet_dup(pkt);
|
||||
}
|
||||
|
||||
@@ -341,7 +327,7 @@ void session_free_ex_data(struct session *sess, uint8_t idx)
|
||||
sess->ex_data[idx] = NULL;
|
||||
}
|
||||
|
||||
void session_free(struct session *sess)
|
||||
void session_clean(struct session *sess)
|
||||
{
|
||||
if (sess)
|
||||
{
|
||||
@@ -402,100 +388,22 @@ void session_run_expirecb(struct session *sess)
|
||||
* session dump
|
||||
******************************************************************************/
|
||||
|
||||
static void tcp_state_to_str(enum tcp_state state, char *buffer, size_t buffer_len)
|
||||
{
|
||||
if (state == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int nused = 0;
|
||||
if (state & TCP_SYN_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_SYN_RECVED ");
|
||||
}
|
||||
|
||||
if (state & TCP_SYNACK_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_SYNACK_RECVED ");
|
||||
}
|
||||
|
||||
if (state & TCP_C2S_ACK_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_C2S_ACK_RECVED ");
|
||||
}
|
||||
|
||||
if (state & TCP_S2C_ACK_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_S2C_ACK_RECVED ");
|
||||
}
|
||||
|
||||
if (state & TCP_C2S_DATA_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_C2S_DATA_RECVED ");
|
||||
}
|
||||
|
||||
if (state & TCP_S2C_DATA_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_S2C_DATA_RECVED ");
|
||||
}
|
||||
|
||||
if (state & TCP_C2S_FIN_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_C2S_FIN_RECVED ");
|
||||
}
|
||||
|
||||
if (state & TCP_S2C_FIN_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_S2C_FIN_RECVED ");
|
||||
}
|
||||
|
||||
if (state & TCP_C2S_RST_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_C2S_RST_RECVED ");
|
||||
}
|
||||
|
||||
if (state & TCP_S2C_RST_RECVED)
|
||||
{
|
||||
nused += snprintf(buffer + nused, buffer_len - nused, "TCP_S2C_RST_RECVED ");
|
||||
}
|
||||
}
|
||||
|
||||
static void udp_state_to_str(enum udp_state state, char *buffer, size_t buffer_len)
|
||||
{
|
||||
if (state == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int nused = 0;
|
||||
if (state & UDP_C2S_RECVED)
|
||||
{
|
||||
snprintf(buffer + nused, buffer_len - nused, "UDP_C2S_RECVED ");
|
||||
}
|
||||
|
||||
if (state & UDP_S2C_RECVED)
|
||||
{
|
||||
snprintf(buffer + nused, buffer_len - nused, "UDP_S2C_RECVED ");
|
||||
}
|
||||
}
|
||||
|
||||
const char *session_closing_reason_to_str(enum closing_reason reason)
|
||||
{
|
||||
switch (reason)
|
||||
{
|
||||
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";
|
||||
}
|
||||
@@ -571,24 +479,12 @@ void session_dump(struct session *sess)
|
||||
printf("session type : %s\n", session_type_to_str(session_get_type(sess)));
|
||||
printf("session dup traffic flag : %s\n", dup_traffic_flag_to_str(session_get_dup_traffic_flag(sess)));
|
||||
printf("session closing reason : %s\n", session_closing_reason_to_str(session_get_closing_reason(sess)));
|
||||
printf("session c2s packets : %" PRIu64 "\n", session_get_c2s_packets(sess));
|
||||
printf("session c2s bytes : %" PRIu64 "\n", session_get_c2s_bytes(sess));
|
||||
printf("session s2c packets : %" PRIu64 "\n", session_get_s2c_packets(sess));
|
||||
printf("session s2c bytes : %" PRIu64 "\n", session_get_s2c_bytes(sess));
|
||||
printf("session C2S packets : %" PRIu64 "\n", session_get_c2s_packets(sess));
|
||||
printf("session C2S bytes : %" PRIu64 "\n", session_get_c2s_bytes(sess));
|
||||
printf("session S2C packets : %" PRIu64 "\n", session_get_s2c_packets(sess));
|
||||
printf("session S2C bytes : %" PRIu64 "\n", session_get_s2c_bytes(sess));
|
||||
printf("session create time : %" PRIu64 "\n", session_get_new_time(sess));
|
||||
printf("session last time : %" PRIu64 "\n", session_get_last_time(sess));
|
||||
if (session_get_type(sess) == SESSION_TYPE_TCP)
|
||||
{
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
tcp_state_to_str(session_get_tcp_state(sess), buffer, sizeof(buffer));
|
||||
printf("session tcp state : %s\n", buffer);
|
||||
}
|
||||
else if (session_get_type(sess) == SESSION_TYPE_UDP)
|
||||
{
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
udp_state_to_str(session_get_udp_state(sess), buffer, sizeof(buffer));
|
||||
printf("session udp state : %s\n", buffer);
|
||||
}
|
||||
printf("session current packet ptr : %p\n", (void *)session_get0_cur_pkt(sess));
|
||||
printf("session current packet dir : %s\n", session_dir_to_str(session_get_cur_dir(sess)));
|
||||
printf("session ex data: \n");
|
||||
|
||||
Reference in New Issue
Block a user