bugfix: session cannot get current flow direction on duplicate package

This commit is contained in:
luwenpeng
2024-05-16 17:05:45 +08:00
parent d6ae7c79f7
commit 1559f0a13e
4 changed files with 9 additions and 5 deletions

View File

@@ -75,7 +75,7 @@ enum session_direction session_get_direction(const struct session *sess)
return sess->sess_dir;
}
void session_set_flow_direction(struct session *sess, enum flow_direction dir)
void session_set_current_flow_direction(struct session *sess, enum flow_direction dir)
{
sess->flow_dir = dir;
}

View File

@@ -496,6 +496,9 @@ static int duplicated_packet_bypass(struct session_manager *mgr, struct session
break;
}
session_set_duplicate_traffic(sess);
session_set_current_packet(sess, pkt);
session_set_current_flow_direction(sess, dir);
return 1;
}
else
@@ -578,7 +581,7 @@ static void session_update(struct session *sess, enum session_state next_state,
}
session_set_current_packet(sess, pkt);
session_set_flow_direction(sess, dir);
session_set_current_flow_direction(sess, dir);
session_set_timestamp(sess, SESSION_TIMESTAMP_LAST, real_sec);
session_set_state(sess, next_state);
}
@@ -997,7 +1000,7 @@ void session_manager_free_session(struct session_manager *mgr, struct session *s
session_clear_sid_list(sess, FLOW_DIRECTION_C2S);
session_clear_sid_list(sess, FLOW_DIRECTION_S2C);
session_set_current_packet(sess, NULL);
session_set_flow_direction(sess, FLOW_DIRECTION_NONE);
session_set_current_flow_direction(sess, FLOW_DIRECTION_NONE);
session_pool_push(mgr->sess_pool, sess);
sess = NULL;
}

View File

@@ -81,7 +81,7 @@ void session_set_tuple(struct session *sess, const struct tuple6 *key);
void session_set_tuple_direction(struct session *sess, enum flow_direction dir);
void session_set_direction(struct session *sess, enum session_direction dir);
void session_set_flow_direction(struct session *sess, enum flow_direction dir);
void session_set_current_flow_direction(struct session *sess, enum flow_direction dir);
void session_set_state(struct session *sess, enum session_state state);
void session_set_type(struct session *sess, enum session_type type);
void session_set_duplicate_traffic(struct session *sess);

View File

@@ -19,6 +19,7 @@ static void update_session_stat(struct session *sess, struct packet *pkt)
if (sess)
{
enum flow_direction dir = session_get_current_flow_direction(sess);
assert(dir != FLOW_DIRECTION_NONE);
int is_ctrl = packet_is_ctrl(pkt);
switch (packet_get_action(pkt))
{
@@ -36,7 +37,7 @@ static void update_session_stat(struct session *sess, struct packet *pkt)
}
session_set_current_packet(sess, NULL);
session_set_flow_direction(sess, FLOW_DIRECTION_NONE);
session_set_current_flow_direction(sess, FLOW_DIRECTION_NONE);
}
}