summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2023-12-15 11:20:05 +0800
committerluwenpeng <[email protected]>2023-12-15 11:20:05 +0800
commit90a6936fd627e2f63a26e7161012723a5063392d (patch)
tree3df4872cfc12a76fd93b676dd5dfc04edb16de15
parenta232045764170f438e817697dd00b2a87f9427fc (diff)
session support get/set current packet
-rw-r--r--src/session/session.cpp38
-rw-r--r--src/session/session.h20
-rw-r--r--src/session/session_manager.cpp2
-rw-r--r--src/session/session_private.h8
4 files changed, 66 insertions, 2 deletions
diff --git a/src/session/session.cpp b/src/session/session.cpp
index 6102005..baa4721 100644
--- a/src/session/session.cpp
+++ b/src/session/session.cpp
@@ -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)
{
diff --git a/src/session/session.h b/src/session/session.h
index 1b5a2cf..f390128 100644
--- a/src/session/session.h
+++ b/src/session/session.h
@@ -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
diff --git a/src/session/session_manager.cpp b/src/session/session_manager.cpp
index 38027f2..03f51a4 100644
--- a/src/session/session_manager.cpp
+++ b/src/session/session_manager.cpp
@@ -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
diff --git a/src/session/session_private.h b/src/session/session_private.h
index e1922cf..4662a32 100644
--- a/src/session/session_private.h
+++ b/src/session/session_private.h
@@ -50,6 +50,14 @@ struct session
uint64_t last_time;
/******************************
+ * Session Current Packet
+ ******************************/
+
+ // session current packet
+ struct packet *cur_pkt;
+ enum session_dir cur_dir;
+
+ /******************************
* Session Ev Queue Zone
******************************/