From 32ae4618ef7f0cd53ffac2f4cbdb583c957286ee Mon Sep 17 00:00:00 2001 From: luwenpeng Date: Thu, 16 May 2024 19:13:36 +0800 Subject: [PATCH] Add support for TCP port reuse (same tuple6 but different ISN) in session manager: evict old session and create new session --- include/stellar/session.h | 11 ++-- src/session/session.cpp | 6 +- src/session/session_manager.cpp | 58 ++++++++++++++++--- src/session/session_manager.h | 2 +- src/session/session_priv.h | 3 +- src/session/session_transition.cpp | 12 ++-- src/session/session_transition.h | 5 +- src/session/test/gtest_case_tcp_fast_open.cpp | 2 +- src/session/test/gtest_filter_tcp_dupkt.cpp | 28 ++++----- .../test/gtest_overload_evict_tcp_sess.cpp | 2 +- .../test/gtest_overload_evict_udp_sess.cpp | 6 +- .../test/gtest_sess_mgr_tcp_reassembly.cpp | 22 +++---- src/session/test/gtest_session_transition.cpp | 4 ++ .../gtest_state_tcp_active_to_closing.cpp | 16 ++--- .../test/gtest_state_tcp_init_to_opening.cpp | 30 +++++----- ...opening_to_active_to_closing_to_closed.cpp | 22 +++---- .../gtest_state_tcp_opening_to_active.cpp | 8 +-- .../gtest_state_tcp_opening_to_closing.cpp | 34 +++++------ ...p_init_to_opening_to_active_to_closing.cpp | 4 +- ...t_state_udp_init_to_opening_to_closing.cpp | 4 +- src/session/test/gtest_timeout_tcp_data.cpp | 4 +- .../test/gtest_timeout_tcp_handshake.cpp | 2 +- src/session/test/gtest_timeout_tcp_init.cpp | 2 +- src/session/test/gtest_timeout_udp_data.cpp | 6 +- src/stellar/stellar.cpp | 2 +- 25 files changed, 176 insertions(+), 119 deletions(-) diff --git a/include/stellar/session.h b/include/stellar/session.h index 7280062..6d3ae34 100644 --- a/include/stellar/session.h +++ b/include/stellar/session.h @@ -44,11 +44,12 @@ enum flow_direction enum closing_reason { 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, + CLOSING_BY_LRU_EVICTED = 0x2, + CLOSING_BY_PORT_REUSE_EVICTED = 0x3, + CLOSING_BY_CLIENT_FIN = 0x4, + CLOSING_BY_CLIENT_RST = 0x5, + CLOSING_BY_SERVER_FIN = 0x6, + CLOSING_BY_SERVER_RST = 0x7, }; enum session_stat diff --git a/src/session/session.cpp b/src/session/session.cpp index 659f7b5..d9a3612 100644 --- a/src/session/session.cpp +++ b/src/session/session.cpp @@ -367,8 +367,10 @@ const char *closing_reason_to_str(enum closing_reason reason) { case CLOSING_BY_TIMEOUT: return "closing by timeout"; - case CLOSING_BY_EVICTED: - return "closing by evicted"; + case CLOSING_BY_LRU_EVICTED: + return "closing by lru evicted"; + case CLOSING_BY_PORT_REUSE_EVICTED: + return "closing by port reuse evicted"; case CLOSING_BY_CLIENT_FIN: return "closing by client FIN"; case CLOSING_BY_CLIENT_RST: diff --git a/src/session/session_manager.cpp b/src/session/session_manager.cpp index ce6431e..d5d0bc1 100644 --- a/src/session/session_manager.cpp +++ b/src/session/session_manager.cpp @@ -286,6 +286,10 @@ static void tcp_update(struct session_manager *mgr, struct session *sess, enum f uint8_t flags = tcp_hdr_get_flags(hdr); uint16_t len = tcp_layer->pld_len; + if ((flags & TH_SYN) && half->isn == 0) + { + half->isn = tcp_hdr_get_seq(hdr); + } half->flags = flags; half->history |= flags; half->seq = tcp_hdr_get_seq(hdr); @@ -586,7 +590,7 @@ static void session_update(struct session *sess, enum session_state next_state, session_set_state(sess, next_state); } -static void session_manager_evicte_session(struct session_manager *mgr, struct session *sess, uint64_t now) +static void session_manager_evicte_session(struct session_manager *mgr, struct session *sess, uint64_t now, int reason) { if (sess == NULL) { @@ -595,12 +599,19 @@ static void session_manager_evicte_session(struct session_manager *mgr, struct s // when session add to evicted queue, session lifetime is over enum session_state curr_state = session_get_state(sess); - enum session_state next_state = session_transition_run(curr_state, LRU_EVICT); - session_transition_log(sess, curr_state, next_state, LRU_EVICT); + enum session_state next_state = session_transition_run(curr_state, reason); + session_transition_log(sess, curr_state, next_state, reason); session_set_state(sess, next_state); if (!session_get_closing_reason(sess)) { - session_set_closing_reason(sess, CLOSING_BY_EVICTED); + if (reason == PORT_REUSE_EVICT) + { + session_set_closing_reason(sess, CLOSING_BY_PORT_REUSE_EVICTED); + } + if (reason == LRU_EVICT) + { + session_set_closing_reason(sess, CLOSING_BY_LRU_EVICTED); + } } session_timer_del(mgr->sess_timer, sess); list_add_tail(&sess->evicte, &mgr->evicte_queue); @@ -629,6 +640,37 @@ static void session_manager_evicte_session(struct session_manager *mgr, struct s } } +static struct session *session_manager_lookup_tcp_session(struct session_manager *mgr, const struct packet *pkt, const struct tuple6 *key, uint64_t now) +{ + struct session *sess = session_table_find_tuple6(mgr->tcp_sess_table, key); + if (sess == NULL) + { + return NULL; + } + + const struct packet_layer *tcp_layer = packet_get_innermost_layer(pkt, LAYER_TYPE_TCP); + const struct tcphdr *hdr = (const struct tcphdr *)tcp_layer->hdr_ptr; + uint8_t flags = tcp_hdr_get_flags(hdr); + if ((flags & TH_SYN) == 0) + { + return sess; + } + + enum flow_direction dir = identify_direction_by_history(sess, key); + struct tcp_half *half = &sess->tcp_halfs[dir]; + if (half->isn && half->isn != tcp_hdr_get_seq(hdr)) + { + // TCP port reuse, evict old session + session_manager_evicte_session(mgr, sess, now, PORT_REUSE_EVICT); + return NULL; + } + else + { + // TCP SYN retransmission + return sess; + } +} + static struct session *session_manager_new_tcp_session(struct session_manager *mgr, const struct packet *pkt, const struct tuple6 *key, uint64_t now) { const struct packet_layer *tcp_layer = packet_get_innermost_layer(pkt, LAYER_TYPE_TCP); @@ -644,7 +686,7 @@ static struct session *session_manager_new_tcp_session(struct session_manager *m if (mgr->opts.tcp_overload_evict_old_sess && mgr->stat.curr_nr_tcp_sess_used >= mgr->opts.max_tcp_session_num - EVICTE_SESSION_BURST) { struct session *evic_sess = session_table_find_lru(mgr->tcp_sess_table); - session_manager_evicte_session(mgr, evic_sess, now); + session_manager_evicte_session(mgr, evic_sess, now, LRU_EVICT); } enum flow_direction dir = (flags & TH_ACK) ? FLOW_DIRECTION_S2C : FLOW_DIRECTION_C2S; @@ -691,7 +733,7 @@ static struct session *session_manager_new_udp_session(struct session_manager *m if (mgr->opts.udp_overload_evict_old_sess && mgr->stat.curr_nr_udp_sess_used >= mgr->opts.max_udp_session_num - EVICTE_SESSION_BURST) { struct session *evic_sess = session_table_find_lru(mgr->udp_sess_table); - session_manager_evicte_session(mgr, evic_sess, now); + session_manager_evicte_session(mgr, evic_sess, now, LRU_EVICT); } struct session *sess = session_pool_pop(mgr->sess_pool); @@ -1006,7 +1048,7 @@ void session_manager_free_session(struct session_manager *mgr, struct session *s } } -struct session *session_manager_lookup_session(struct session_manager *mgr, const struct packet *pkt) +struct session *session_manager_lookup_session(struct session_manager *mgr, const struct packet *pkt, uint64_t now) { struct tuple6 key; if (packet_get_innermost_tuple6(pkt, &key)) @@ -1018,7 +1060,7 @@ struct session *session_manager_lookup_session(struct session_manager *mgr, cons case IPPROTO_UDP: return session_table_find_tuple6(mgr->udp_sess_table, &key); case IPPROTO_TCP: - return session_table_find_tuple6(mgr->tcp_sess_table, &key); + return session_manager_lookup_tcp_session(mgr, pkt, &key, now); default: return NULL; } diff --git a/src/session/session_manager.h b/src/session/session_manager.h index 36ce1e7..888c1ae 100644 --- a/src/session/session_manager.h +++ b/src/session/session_manager.h @@ -104,7 +104,7 @@ void session_manager_record_duplicated_packet(struct session_manager *mgr, const struct session *session_manager_new_session(struct session_manager *mgr, const struct packet *pkt, uint64_t now); void session_manager_free_session(struct session_manager *mgr, struct session *sess); -struct session *session_manager_lookup_session(struct session_manager *mgr, const struct packet *pkt); +struct session *session_manager_lookup_session(struct session_manager *mgr, const struct packet *pkt, uint64_t now); int session_manager_update_session(struct session_manager *mgr, struct session *sess, const struct packet *pkt, uint64_t now); // return session need free by session_manager_free_session() diff --git a/src/session/session_priv.h b/src/session/session_priv.h index b04906d..e76141b 100644 --- a/src/session/session_priv.h +++ b/src/session/session_priv.h @@ -26,7 +26,8 @@ struct tcp_half struct tcp_reassembly *assembler; struct tcp_segment in_order; uint32_t in_order_ref; - + + uint32_t isn; uint32_t seq; uint32_t ack; uint16_t len; diff --git a/src/session/session_transition.cpp b/src/session/session_transition.cpp index 948fced..be75b0a 100644 --- a/src/session/session_transition.cpp +++ b/src/session/session_transition.cpp @@ -71,6 +71,10 @@ static void session_inputs_to_str(int inputs, char *buff, int len) { nused += snprintf(buff + nused, len - nused, "LRU_EVICT "); } + if (inputs & PORT_REUSE_EVICT) + { + nused += snprintf(buff + nused, len - nused, "PORT_REUSE_EVICT "); + } if (inputs & USER_CLOSE) { nused += snprintf(buff + nused, len - nused, "USER_CLOSE "); @@ -94,7 +98,7 @@ void session_transition_init() fsm[SESSION_STATE_OPENING][2].inputs_mask = USER_CLOSE; fsm[SESSION_STATE_OPENING][2].next_state = SESSION_STATE_DISCARD; - fsm[SESSION_STATE_OPENING][3].inputs_mask = LRU_EVICT; + fsm[SESSION_STATE_OPENING][3].inputs_mask = LRU_EVICT | PORT_REUSE_EVICT; fsm[SESSION_STATE_OPENING][3].next_state = SESSION_STATE_CLOSED; fsm[SESSION_STATE_OPENING][4].inputs_mask = NONE; @@ -106,7 +110,7 @@ void session_transition_init() fsm[SESSION_STATE_ACTIVE][1].inputs_mask = USER_CLOSE; fsm[SESSION_STATE_ACTIVE][1].next_state = SESSION_STATE_DISCARD; - fsm[SESSION_STATE_ACTIVE][2].inputs_mask = LRU_EVICT; + fsm[SESSION_STATE_ACTIVE][2].inputs_mask = LRU_EVICT | PORT_REUSE_EVICT; fsm[SESSION_STATE_ACTIVE][2].next_state = SESSION_STATE_CLOSED; fsm[SESSION_STATE_ACTIVE][3].inputs_mask = NONE; @@ -115,13 +119,13 @@ void session_transition_init() fsm[SESSION_STATE_CLOSING][0].inputs_mask = USER_CLOSE; fsm[SESSION_STATE_CLOSING][0].next_state = SESSION_STATE_DISCARD; - fsm[SESSION_STATE_CLOSING][1].inputs_mask = LRU_EVICT | TIMEOUT; + fsm[SESSION_STATE_CLOSING][1].inputs_mask = LRU_EVICT | PORT_REUSE_EVICT | TIMEOUT; fsm[SESSION_STATE_CLOSING][1].next_state = SESSION_STATE_CLOSED; fsm[SESSION_STATE_CLOSING][2].inputs_mask = NONE; fsm[SESSION_STATE_CLOSING][2].next_state = SESSION_STATE_CLOSING; - fsm[SESSION_STATE_DISCARD][0].inputs_mask = LRU_EVICT | TIMEOUT; + fsm[SESSION_STATE_DISCARD][0].inputs_mask = LRU_EVICT | PORT_REUSE_EVICT | TIMEOUT; fsm[SESSION_STATE_DISCARD][0].next_state = SESSION_STATE_CLOSED; fsm[SESSION_STATE_DISCARD][1].inputs_mask = NONE; diff --git a/src/session/session_transition.h b/src/session/session_transition.h index afb004e..e52de08 100644 --- a/src/session/session_transition.h +++ b/src/session/session_transition.h @@ -29,8 +29,11 @@ enum session_inputs // session table full evict LRU_EVICT = 1 << 7, + // port reuse evict + PORT_REUSE_EVICT = 1 << 8, + // user close - USER_CLOSE = 1 << 8, + USER_CLOSE = 1 << 9, }; void session_transition_init(); diff --git a/src/session/test/gtest_case_tcp_fast_open.cpp b/src/session/test/gtest_case_tcp_fast_open.cpp index ed03b09..93c122c 100644 --- a/src/session/test/gtest_case_tcp_fast_open.cpp +++ b/src/session/test/gtest_case_tcp_fast_open.cpp @@ -313,7 +313,7 @@ TEST(CASE, TCP_FAST_OPEN) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); diff --git a/src/session/test/gtest_filter_tcp_dupkt.cpp b/src/session/test/gtest_filter_tcp_dupkt.cpp index bbee9a6..2b3b104 100644 --- a/src/session/test/gtest_filter_tcp_dupkt.cpp +++ b/src/session/test/gtest_filter_tcp_dupkt.cpp @@ -70,7 +70,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYN_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -85,7 +85,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYN_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == -1); @@ -103,7 +103,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYN_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -133,7 +133,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYNACK_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -148,7 +148,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYNACK_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == -1); @@ -166,7 +166,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYNACK_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -197,7 +197,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -214,7 +214,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -231,7 +231,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -246,7 +246,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -279,7 +279,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYN_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -294,7 +294,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYN_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -327,7 +327,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYNACK_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -342,7 +342,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYNACK_DUP) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); diff --git a/src/session/test/gtest_overload_evict_tcp_sess.cpp b/src/session/test/gtest_overload_evict_tcp_sess.cpp index 0b1e8bf..3e56c98 100644 --- a/src/session/test/gtest_overload_evict_tcp_sess.cpp +++ b/src/session/test/gtest_overload_evict_tcp_sess.cpp @@ -132,7 +132,7 @@ TEST(TCP_OVERLOAD, EVICT_NEW_SESS) for (uint32_t i = 0; i < RX_BURST_MAX; i++) { packet_set_ip_src_addr(&pkt, opts.max_tcp_session_num + i); - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); EXPECT_TRUE(session_manager_new_session(mgr, &pkt, 1) == NULL); } printf("=> Session Manager: after evicte new session\n"); diff --git a/src/session/test/gtest_overload_evict_udp_sess.cpp b/src/session/test/gtest_overload_evict_udp_sess.cpp index 5d3cf33..04b6026 100644 --- a/src/session/test/gtest_overload_evict_udp_sess.cpp +++ b/src/session/test/gtest_overload_evict_udp_sess.cpp @@ -106,7 +106,7 @@ TEST(UDP_OVERLOAD, EVICT_OLD_SESS) for (uint32_t i = 0; i < RX_BURST_MAX; i++) { packet_set_ip_src_addr(&pkt, i); - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); EXPECT_TRUE(session_manager_new_session(mgr, &pkt, 1) == NULL); // hit evicted session, can't renew session } printf("=> Session Manager: after readd %d evicted sessions\n", RX_BURST_MAX); @@ -123,7 +123,7 @@ TEST(UDP_OVERLOAD, EVICT_OLD_SESS) // evicted session timeout packet_set_ip_src_addr(&pkt, 0); - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1 + opts.evicted_session_filter_timeout) == NULL); EXPECT_TRUE(session_manager_new_session(mgr, &pkt, 1 + opts.evicted_session_filter_timeout)); printf("=> Session Manager: after evicted session timeout\n"); stat = session_manager_stat(mgr); @@ -184,7 +184,7 @@ TEST(UDP_OVERLOAD, EVICT_NEW_SESS) for (uint32_t i = 0; i < RX_BURST_MAX; i++) { packet_set_ip_src_addr(&pkt, opts.max_udp_session_num + i); - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); EXPECT_TRUE(session_manager_new_session(mgr, &pkt, 1) == NULL); } printf("=> Session Manager: after readd %d evicted session\n", RX_BURST_MAX); diff --git a/src/session/test/gtest_sess_mgr_tcp_reassembly.cpp b/src/session/test/gtest_sess_mgr_tcp_reassembly.cpp index 93c3efd..7252766 100644 --- a/src/session/test/gtest_sess_mgr_tcp_reassembly.cpp +++ b/src/session/test/gtest_sess_mgr_tcp_reassembly.cpp @@ -76,7 +76,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, OUT_OF_ORDER) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -90,7 +90,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, OUT_OF_ORDER) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -104,7 +104,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, OUT_OF_ORDER) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -118,7 +118,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, OUT_OF_ORDER) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 4); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 4) == 0); @@ -132,7 +132,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, OUT_OF_ORDER) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 5); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 5) == 0); @@ -146,7 +146,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, OUT_OF_ORDER) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 6); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 6) == 0); @@ -160,7 +160,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, OUT_OF_ORDER) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 7); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 7) == 0); @@ -260,7 +260,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, SEQ_WRAPAROUND) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -274,7 +274,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, SEQ_WRAPAROUND) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -288,7 +288,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, SEQ_WRAPAROUND) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -306,7 +306,7 @@ TEST(SESS_MGR_TCP_REASSEMBLY, SEQ_WRAPAROUND) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 4); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 4) == 0); diff --git a/src/session/test/gtest_session_transition.cpp b/src/session/test/gtest_session_transition.cpp index 7007d5e..a41309e 100644 --- a/src/session/test/gtest_session_transition.cpp +++ b/src/session/test/gtest_session_transition.cpp @@ -19,6 +19,7 @@ TEST(SESSION_TRANSITION, RUN) EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, TIMEOUT) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, USER_CLOSE) == SESSION_STATE_DISCARD); EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, LRU_EVICT) == SESSION_STATE_CLOSED); + EXPECT_TRUE(session_transition_run(SESSION_STATE_OPENING, PORT_REUSE_EVICT) == SESSION_STATE_CLOSED); EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, NONE) == SESSION_STATE_ACTIVE); EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, TCP_FIN) == SESSION_STATE_CLOSING); @@ -26,14 +27,17 @@ TEST(SESSION_TRANSITION, RUN) EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, TIMEOUT) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, USER_CLOSE) == SESSION_STATE_DISCARD); EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, LRU_EVICT) == SESSION_STATE_CLOSED); + EXPECT_TRUE(session_transition_run(SESSION_STATE_ACTIVE, PORT_REUSE_EVICT) == SESSION_STATE_CLOSED); EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, NONE) == SESSION_STATE_CLOSING); EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, USER_CLOSE) == SESSION_STATE_DISCARD); EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, LRU_EVICT) == SESSION_STATE_CLOSED); + EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, PORT_REUSE_EVICT) == SESSION_STATE_CLOSED); EXPECT_TRUE(session_transition_run(SESSION_STATE_CLOSING, TIMEOUT) == SESSION_STATE_CLOSED); EXPECT_TRUE(session_transition_run(SESSION_STATE_DISCARD, NONE) == SESSION_STATE_DISCARD); EXPECT_TRUE(session_transition_run(SESSION_STATE_DISCARD, LRU_EVICT) == SESSION_STATE_CLOSED); + EXPECT_TRUE(session_transition_run(SESSION_STATE_DISCARD, PORT_REUSE_EVICT) == SESSION_STATE_CLOSED); EXPECT_TRUE(session_transition_run(SESSION_STATE_DISCARD, TIMEOUT) == SESSION_STATE_CLOSED); } diff --git a/src/session/test/gtest_state_tcp_active_to_closing.cpp b/src/session/test/gtest_state_tcp_active_to_closing.cpp index 35bf5fc..d405ea2 100644 --- a/src/session/test/gtest_state_tcp_active_to_closing.cpp +++ b/src/session/test/gtest_state_tcp_active_to_closing.cpp @@ -57,7 +57,7 @@ static void build_active_tcp_session(struct session_manager *mgr, struct session printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -68,7 +68,7 @@ static void build_active_tcp_session(struct session_manager *mgr, struct session printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -100,7 +100,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_FIN_FIN) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -111,7 +111,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_FIN_FIN) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -198,7 +198,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_RST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -285,7 +285,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_RST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -413,7 +413,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_C2S_HALF_CLOSED_TIMEOUT) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -493,7 +493,7 @@ TEST(TCP_ACTIVE_TO_CLOSING, BY_S2C_HALF_CLOSED_TIMEOUT) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); diff --git a/src/session/test/gtest_state_tcp_init_to_opening.cpp b/src/session/test/gtest_state_tcp_init_to_opening.cpp index bc98620..b96978b 100644 --- a/src/session/test/gtest_state_tcp_init_to_opening.cpp +++ b/src/session/test/gtest_state_tcp_init_to_opening.cpp @@ -70,7 +70,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -148,7 +148,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -226,7 +226,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -237,7 +237,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -315,7 +315,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -326,7 +326,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -337,7 +337,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -417,7 +417,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -433,7 +433,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -513,7 +513,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -530,7 +530,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -608,7 +608,7 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -619,7 +619,7 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -697,7 +697,7 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -708,7 +708,7 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); diff --git a/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp b/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp index 98088d1..e4638e5 100644 --- a/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp +++ b/src/session/test/gtest_state_tcp_init_to_opening_to_active_to_closing_to_closed.cpp @@ -65,7 +65,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -96,7 +96,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -127,7 +127,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -158,7 +158,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 4); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 4) == 0); @@ -189,7 +189,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 5); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 5) == 0); @@ -220,7 +220,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 6); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 6) == 0); @@ -251,7 +251,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 7); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 7) == 0); @@ -282,7 +282,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 8); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 8) == 0); @@ -313,7 +313,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 9); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 9) == 0); @@ -344,7 +344,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 10); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 10) == 0); @@ -375,7 +375,7 @@ TEST(TCP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING_TO_CLOSED, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 11); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 11) == 0); diff --git a/src/session/test/gtest_state_tcp_opening_to_active.cpp b/src/session/test/gtest_state_tcp_opening_to_active.cpp index 6583eba..9ac0d2c 100644 --- a/src/session/test/gtest_state_tcp_opening_to_active.cpp +++ b/src/session/test/gtest_state_tcp_opening_to_active.cpp @@ -69,7 +69,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYN_C2S_DATA) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -80,7 +80,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYN_C2S_DATA) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -158,7 +158,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -169,7 +169,7 @@ TEST(TCP_OPENING_TO_ACTIVE, BY_SYNACK_S2C_DATA) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); diff --git a/src/session/test/gtest_state_tcp_opening_to_closing.cpp b/src/session/test/gtest_state_tcp_opening_to_closing.cpp index cd16221..a11397a 100644 --- a/src/session/test/gtest_state_tcp_opening_to_closing.cpp +++ b/src/session/test/gtest_state_tcp_opening_to_closing.cpp @@ -70,7 +70,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -81,7 +81,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -92,7 +92,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_FIN_FIN) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -169,7 +169,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -187,7 +187,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_RST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -264,7 +264,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -282,7 +282,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_RST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -358,7 +358,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_INIT_TIMEOUT) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -416,7 +416,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_HANDSHAKE_TIMEOUT) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -427,7 +427,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_HANDSHAKE_TIMEOUT) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -505,7 +505,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -516,7 +516,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -527,7 +527,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_DATA_TIMEOUT) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 3); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 3) == 0); @@ -605,7 +605,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_HALF_FIN) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -616,7 +616,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_C2S_HALF_FIN) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); @@ -693,7 +693,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_FIN) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -704,7 +704,7 @@ TEST(TCP_OPENING_TO_CLOSING, BY_S2C_HALF_FIN) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); diff --git a/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp b/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp index 5874ce6..17f59f4 100644 --- a/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp +++ b/src/session/test/gtest_state_udp_init_to_opening_to_active_to_closing.cpp @@ -65,7 +65,7 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -95,7 +95,7 @@ TEST(UDP_INIT_TO_OPENING_TO_ACTIVE_TO_CLOSING, TEST) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); diff --git a/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp b/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp index 9786fa3..5f2ba78 100644 --- a/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp +++ b/src/session/test/gtest_state_udp_init_to_opening_to_closing.cpp @@ -70,7 +70,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_C2S) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -149,7 +149,7 @@ TEST(UDP_INIT_TO_OPENING_TO_CLOSING, BY_S2C) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); diff --git a/src/session/test/gtest_timeout_tcp_data.cpp b/src/session/test/gtest_timeout_tcp_data.cpp index 83ce092..a7fd73e 100644 --- a/src/session/test/gtest_timeout_tcp_data.cpp +++ b/src/session/test/gtest_timeout_tcp_data.cpp @@ -62,7 +62,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_DATA) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -73,7 +73,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_DATA) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); diff --git a/src/session/test/gtest_timeout_tcp_handshake.cpp b/src/session/test/gtest_timeout_tcp_handshake.cpp index 31c80a5..b3825c9 100644 --- a/src/session/test/gtest_timeout_tcp_handshake.cpp +++ b/src/session/test/gtest_timeout_tcp_handshake.cpp @@ -63,7 +63,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_HANDSHAKE) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); diff --git a/src/session/test/gtest_timeout_tcp_init.cpp b/src/session/test/gtest_timeout_tcp_init.cpp index b6c987b..2145dac 100644 --- a/src/session/test/gtest_timeout_tcp_init.cpp +++ b/src/session/test/gtest_timeout_tcp_init.cpp @@ -63,7 +63,7 @@ TEST(TIMEOUT, TCP_TIMEOUT_INIT) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); diff --git a/src/session/test/gtest_timeout_udp_data.cpp b/src/session/test/gtest_timeout_udp_data.cpp index 5f4571e..f18c538 100644 --- a/src/session/test/gtest_timeout_udp_data.cpp +++ b/src/session/test/gtest_timeout_udp_data.cpp @@ -62,7 +62,7 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA1) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -98,7 +98,7 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA2) printf("<= Packet Parse: done\n\n"); // lookup session - EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt) == NULL); + EXPECT_TRUE(session_manager_lookup_session(mgr, &pkt, 1) == NULL); // new session sess = session_manager_new_session(mgr, &pkt, 1); EXPECT_TRUE(sess); @@ -109,7 +109,7 @@ TEST(TIMEOUT, UDP_TIMEOUT_DATA2) printf("<= Packet Parse: done\n\n"); // lookup session - sess = session_manager_lookup_session(mgr, &pkt); + sess = session_manager_lookup_session(mgr, &pkt, 2); EXPECT_TRUE(sess); // update session EXPECT_TRUE(session_manager_update_session(mgr, sess, &pkt, 2) == 0); diff --git a/src/stellar/stellar.cpp b/src/stellar/stellar.cpp index da5c79d..51e93b7 100644 --- a/src/stellar/stellar.cpp +++ b/src/stellar/stellar.cpp @@ -152,7 +152,7 @@ static void *work_thread(void *arg) } } - sess = session_manager_lookup_session(sess_mgr, pkt); + sess = session_manager_lookup_session(sess_mgr, pkt, now); if (sess == NULL) { sess = session_manager_new_session(sess_mgr, pkt, now);