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

@@ -13,11 +13,10 @@ extern "C"
enum session_state
{
SESSION_STATE_INIT = 0,
SESSION_STATE_OPENING,
SESSION_STATE_ACTIVE,
SESSION_STATE_CLOSING,
SESSION_STATE_CLOSED,
SESSION_STATE_OPENING = 0x1,
SESSION_STATE_ACTIVE = 0x2,
SESSION_STATE_CLOSING = 0x3,
SESSION_STATE_CLOSED = 0x4,
};
enum session_type
@@ -28,19 +27,25 @@ enum session_type
enum session_dir
{
SESSION_DIR_NONE = 0,
SESSION_DIR_C2S = 1,
SESSION_DIR_S2C = 2,
SESSION_DIR_NONE = 0x0,
SESSION_DIR_C2S = 0x1,
SESSION_DIR_S2C = 0x2,
};
enum dup_traffic_flag
{
DUP_TRAFFIC_YES = 0x1,
DUP_TRAFFIC_NO = 0x2,
};
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,
CLOSING_BY_TIMEOUT = 0x1,
CLOSING_BY_EVICTED = 0x2,
CLOSING_BY_CLIENT_FIN = 0x3,
CLOSING_BY_CLIENT_RST = 0x4,
CLOSING_BY_SERVER_FIN = 0x5,
CLOSING_BY_SERVER_RST = 0x6,
};
struct session;
@@ -56,7 +61,7 @@ void session_set_id(struct session *sess, uint64_t id);
uint64_t session_get_id(const struct session *sess);
// session key
void session_set_tuple6(struct session *sess, struct tuple6 *tuple);
void session_set_tuple6(struct session *sess, const struct tuple6 *tuple);
const struct tuple6 *session_get0_tuple6(const struct session *sess);
void session_set_tuple6_dir(struct session *sess, enum session_dir dir);
enum session_dir session_get_tuple6_dir(const struct session *sess);
@@ -69,6 +74,10 @@ enum session_state session_get_state(const struct session *sess);
void session_set_type(struct session *sess, enum session_type type);
enum session_type session_get_type(const struct session *sess);
// session dup traffic flag
void session_set_dup_traffic_flag(struct session *sess, enum dup_traffic_flag flag);
enum dup_traffic_flag session_get_dup_traffic_flag(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);