session add API support get/set closing reasion

This commit is contained in:
luwenpeng
2024-01-16 14:10:13 +08:00
parent 8f685bc018
commit 1d4736ac88
3 changed files with 51 additions and 6 deletions

View File

@@ -88,6 +88,17 @@ enum session_type session_get_type(const struct session *sess)
return sess->type; return sess->type;
} }
// closing reasion
void session_set_closing_reasion(struct session *sess, enum closing_reasion reasion)
{
sess->closing_reasion = reasion;
}
enum closing_reasion session_get_closing_reasion(const struct session *sess)
{
return sess->closing_reasion;
}
// session metrics // session metrics
void session_inc_c2s_metrics(struct session *sess, uint64_t packets, uint64_t bytes) void session_inc_c2s_metrics(struct session *sess, uint64_t packets, uint64_t bytes)
{ {
@@ -388,6 +399,27 @@ static void udp_ex_data_tostring(uint64_t ex_data, char *buffer, size_t buffer_l
} }
} }
const char *session_closing_reasion_tostring(enum closing_reasion reasion)
{
switch (reasion)
{
case CLOSING_BY_TIMEOUT:
return "CLOSING_BY_TIMEOUT";
case CLOSING_BY_EVICTED:
return "CLOSING_BY_EVICTED";
case CLOSING_BY_CLIENT_FIN:
return "CLOSING_BY_CLIENT_FIN";
case CLOSING_BY_CLIENT_RST:
return "CLOSING_BY_CLIENT_RST";
case CLOSING_BY_SERVER_FIN:
return "CLOSING_BY_SERVER_FIN";
case CLOSING_BY_SERVER_RST:
return "CLOSING_BY_SERVER_RST";
default:
return "unknown";
}
}
const char *session_state_tostring(enum session_state state) const char *session_state_tostring(enum session_state state)
{ {
switch (state) switch (state)
@@ -445,6 +477,7 @@ void session_dump(struct session *sess)
printf("session tuple6 dir : %s\n", session_dir_tostring(session_get_tuple6_dir(sess))); printf("session tuple6 dir : %s\n", session_dir_tostring(session_get_tuple6_dir(sess)));
printf("session state : %s\n", session_state_tostring(session_get_state(sess))); printf("session state : %s\n", session_state_tostring(session_get_state(sess)));
printf("session type : %s\n", session_type_tostring(session_get_type(sess))); printf("session type : %s\n", session_type_tostring(session_get_type(sess)));
printf("session closing reasion : %s\n", session_closing_reasion_tostring(session_get_closing_reasion(sess)));
printf("session c2s packets : %" PRIu64 "\n", session_get_c2s_packets(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 c2s bytes : %" PRIu64 "\n", session_get_c2s_bytes(sess));
printf("session s2c packets : %" PRIu64 "\n", session_get_s2c_packets(sess)); printf("session s2c packets : %" PRIu64 "\n", session_get_s2c_packets(sess));

View File

@@ -20,12 +20,6 @@ enum session_state
SESSION_STATE_CLOSED, SESSION_STATE_CLOSED,
}; };
enum session_action
{
SESSION_ACTION_DISCARD,
SESSION_ACTION_FASTFORWARD,
};
enum session_type enum session_type
{ {
SESSION_TYPE_TCP = 0x1, SESSION_TYPE_TCP = 0x1,
@@ -39,6 +33,16 @@ enum session_dir
SESSION_DIR_S2C = 2, SESSION_DIR_S2C = 2,
}; };
enum closing_reasion
{
CLOSING_BY_TIMEOUT = 1,
CLOSING_BY_EVICTED = 2,
CLOSING_BY_CLIENT_FIN = 3,
CLOSING_BY_CLIENT_RST = 4,
CLOSING_BY_SERVER_FIN = 5,
CLOSING_BY_SERVER_RST = 6,
};
struct session; struct session;
/****************************************************************************** /******************************************************************************
@@ -65,6 +69,10 @@ enum session_state session_get_state(const struct session *sess);
void session_set_type(struct session *sess, enum session_type type); void session_set_type(struct session *sess, enum session_type type);
enum session_type session_get_type(const struct session *sess); enum session_type session_get_type(const struct session *sess);
// closing reasion
void session_set_closing_reasion(struct session *sess, enum closing_reasion reasion);
enum closing_reasion session_get_closing_reasion(const struct session *sess);
// session metrics // session metrics
void session_inc_c2s_metrics(struct session *sess, uint64_t packets, uint64_t bytes); void session_inc_c2s_metrics(struct session *sess, uint64_t packets, uint64_t bytes);
void session_inc_s2c_metrics(struct session *sess, uint64_t packets, uint64_t bytes); void session_inc_s2c_metrics(struct session *sess, uint64_t packets, uint64_t bytes);
@@ -140,6 +148,7 @@ void session_run_expirecb(struct session *sess);
* session dump * session dump
******************************************************************************/ ******************************************************************************/
const char *session_closing_reasion_tostring(enum closing_reasion reasion);
const char *session_state_tostring(enum session_state state); const char *session_state_tostring(enum session_state state);
const char *session_type_tostring(enum session_type type); const char *session_type_tostring(enum session_type type);
const char *session_dir_tostring(enum session_dir dir); const char *session_dir_tostring(enum session_dir dir);

View File

@@ -49,6 +49,9 @@ struct session
// session type // session type
enum session_type type; enum session_type type;
// closing reasion
enum closing_reasion closing_reasion;
// session metrics // session metrics
uint64_t c2s_bytes; uint64_t c2s_bytes;
uint64_t s2c_bytes; uint64_t s2c_bytes;