session manager support tcp reassembly

This commit is contained in:
luwenpeng
2024-03-26 15:09:03 +08:00
parent 5b92d6d8de
commit eb281ab789
30 changed files with 1917 additions and 88 deletions

View File

@@ -29,40 +29,6 @@ static void tcp_reassembly_check_stat(struct tcp_reassembly *assy,
EXPECT_TRUE(stat->timeout_discard_bytes == timeout_discard_bytes);
}
#if 0
const char *session_peek_tcp_payload(struct session *session, uint32_t *len)
{
struct tcp_reassembly *assy;
struct session_dir *dir = session_get_cur_dir(session);
if (dir == SESSION_DIR_C2S)
{
assy = session_get_tcp_c2s_reassembly(session);
}
else
{
assy = session_get_tcp_s2c_reassembly(session);
}
return tcp_reassembly_peek(assy, len);
}
void session_consume_tcp_payload(struct session *session, uint32_t len)
{
struct tcp_reassembly *assy;
struct session_dir *dir = session_get_cur_dir(session);
if (dir == SESSION_DIR_C2S)
{
assy = session_get_tcp_c2s_reassembly(session);
}
else
{
assy = session_get_tcp_s2c_reassembly(session);
}
tcp_reassembly_consume(assy, len);
}
#endif
#if 1
TEST(TCP_REASSEMBLY, TEST)
{
@@ -286,8 +252,6 @@ TEST(TCP_REASSEMBLY, REPEAT2)
* +---> 90 +---> 100 +---> 109
*/
// C2S
tcp_reassembly_insert(assy, 90, (const char *)"0123456789", 10, 0);
tcp_reassembly_check_stat(assy,
1, 10, // curr_segments, curr_bytes
@@ -476,6 +440,7 @@ TEST(TCP_REASSEMBLY, SEQ_WRAPAROUND)
.max_segments = 16,
.max_bytes = 1500};
// UINT32_MAX = 4294967295
printf("UINT32_MAX = %u\n", UINT32_MAX);
assy = tcp_reassembly_new(&opts);
@@ -502,9 +467,9 @@ TEST(TCP_REASSEMBLY, SEQ_WRAPAROUND)
* | | | |A|B|C|D|E|F|G|H|I|J|
* | | | +-+-+-+-+-+-+-+-+-+-+
* | | | | | |
* | | | | | +---> UINT32_MAX + 11
* | | | | +---> UINT32_MAX + 5
* | | | +---> UINT32_MAX + 2
* | | | | | +---> 10
* | | | | +---> 4
* | | | +---> 1
* | | +---> UINT32_MAX - 1
* | +---> UINT32_MAX - 4
* +---> UINT32_MAX - 10
@@ -532,7 +497,7 @@ TEST(TCP_REASSEMBLY, SEQ_WRAPAROUND)
0, 0, // retrans_bypass_segments, retrans_bypass_bytes
0, 0, // overload_bypass_segments, overload_bypass_bytes
0, 0); // timeout_discard_segments, timeout_discard_bytes
tcp_reassembly_insert(assy, 2, (const char *)"ABCDEFGHIJ", 10, 0);
tcp_reassembly_insert(assy, 1, (const char *)"ABCDEFGHIJ", 10, 0);
tcp_reassembly_check_stat(assy,
3, 30, // curr_segments, curr_bytes
3, 30, // insert_segments, insert_bytes
@@ -627,7 +592,6 @@ TEST(TCP_REASSEMBLY, MAX_TIMEOUT1)
* +---> 90 +---> 100 +---> 109
*/
// C2S
tcp_reassembly_insert(assy, 90, (const char *)"0123456789", 10, 0);
tcp_reassembly_check_stat(assy,
1, 10, // curr_segments, curr_bytes
@@ -828,7 +792,6 @@ TEST(TCP_REASSEMBLY, MAX_PACKETS)
* +---> 90 +---> 100 +---> 110
*/
// C2S
tcp_reassembly_insert(assy, 90, (const char *)"0123456789", 10, 0);
tcp_reassembly_check_stat(assy,
1, 10, // curr_segments, curr_bytes
@@ -917,7 +880,6 @@ TEST(TCP_REASSEMBLY, MAX_BYTES)
* +---> 90 +---> 100 +---> 110
*/
// C2S
tcp_reassembly_insert(assy, 90, (const char *)"0123456789", 10, 0);
tcp_reassembly_check_stat(assy,
1, 10, // curr_segments, curr_bytes