session support get/set current packet

This commit is contained in:
luwenpeng
2023-12-15 11:20:05 +08:00
parent a232045764
commit 90a6936fd6
4 changed files with 66 additions and 2 deletions

View File

@@ -294,11 +294,19 @@ void session_set_s2c_1st_md(struct session *sess, struct metadata *md)
struct metadata *session_get0_c2s_1st_md(struct session *sess)
{
if (sess->c2s_1st_md.len == 0)
{
return NULL;
}
return &sess->c2s_1st_md;
}
struct metadata *session_get0_s2c_1st_md(struct session *sess)
{
if (sess->s2c_1st_md.len == 0)
{
return NULL;
}
return &sess->s2c_1st_md;
}
@@ -323,6 +331,36 @@ uint64_t session_get_last_time(struct session *sess)
return sess->last_time;
}
/******************************************************************************
* session current packet
******************************************************************************/
// session current packet
void session_set0_cur_pkt(struct session *sess, const struct packet *pkt)
{
sess->cur_pkt = pkt;
}
struct packet *session_get0_cur_pkt(struct session *sess)
{
return sess->cur_pkt;
}
// session current dir
void session_set_cur_dir(struct session *sess, enum session_dir dir)
{
sess->cur_dir = dir;
}
enum session_dir session_get_cur_dir(struct session *sess)
{
return sess->cur_dir;
}
/******************************************************************************
* session event
******************************************************************************/
// session event
bool session_push_event(struct session *sess, uint32_t event)
{

View File

@@ -64,9 +64,16 @@ struct session_key
uint64_t security_zone;
};
enum session_dir
{
SESSION_DIR_C2S = 0,
SESSION_DIR_S2C = 1,
};
struct metadata
{
char data[64]; // TODO
int len;
};
struct session;
@@ -121,7 +128,18 @@ void session_set_create_time(struct session *sess, uint64_t timestamp);
void session_set_last_time(struct session *sess, uint64_t timestamp);
uint64_t session_get_create_time(struct session *sess);
uint64_t session_get_last_time(struct session *sess);
uint64_t session_get_expire_time(struct session *sess);
/******************************************************************************
* session current packet
******************************************************************************/
// session current packet
void session_set0_cur_pkt(struct session *sess, const struct packet *pkt);
struct packet *session_get0_cur_pkt(struct session *sess);
// session current dir
void session_set_cur_dir(struct session *sess, enum session_dir dir);
enum session_dir session_get_cur_dir(struct session *sess);
/******************************************************************************
* session event

View File

@@ -168,7 +168,7 @@ void session_manager_set_session_eventcb(struct session_manager *mgr, session_ev
mgr->arg = arg;
}
struct session *session_manager_find_sessions(struct session_manager *mgr, const struct packet *pkt)
struct session *session_manager_find_session(struct session_manager *mgr, const struct packet *pkt)
{
struct session_key key;
// TODO packet to key

View File

@@ -49,6 +49,14 @@ struct session
uint64_t create_time;
uint64_t last_time;
/******************************
* Session Current Packet
******************************/
// session current packet
struct packet *cur_pkt;
enum session_dir cur_dir;
/******************************
* Session Ev Queue Zone
******************************/