Duplicated packet filter supports IPv4-Based TCP / UDP packet (IPv6 is not supported, because IPv6 does not have an IPid and cannot distinguish between retransmissions and duplicates)
This commit is contained in:
@@ -77,7 +77,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYN_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
// C2S SYN dup Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN dup packet\n");
|
||||
@@ -92,7 +92,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYN_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 1);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 1);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 1);
|
||||
|
||||
// C2S SYN retransmission Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN retransmission packet\n");
|
||||
@@ -110,7 +110,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYN_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 1);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 1);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 1);
|
||||
|
||||
session_manager_free(mgr);
|
||||
}
|
||||
@@ -140,7 +140,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYNACK_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
// S2C SYNACK dup Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK dup packet\n");
|
||||
@@ -155,7 +155,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYNACK_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 1);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 1);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 1);
|
||||
|
||||
// S2C SYNACK retransmission Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK retransmission packet\n");
|
||||
@@ -173,7 +173,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SYNACK_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 1);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 1);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 1);
|
||||
|
||||
session_manager_free(mgr);
|
||||
}
|
||||
@@ -204,7 +204,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
// C2S SYN retransmission Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN retransmission packet\n");
|
||||
@@ -221,7 +221,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
// C2S SYN retransmission Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN retransmission packet\n");
|
||||
@@ -238,7 +238,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
// C2S SYN dup Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN dup packet\n");
|
||||
@@ -253,7 +253,7 @@ TEST(TCP_DUPKT_FILTER_ENABLE, SKIP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
session_manager_free(mgr);
|
||||
}
|
||||
@@ -286,7 +286,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYN_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
// C2S SYN dup Packet
|
||||
printf("\n=> Packet Parse: TCP C2S SYN dup packet\n");
|
||||
@@ -301,7 +301,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYN_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
session_manager_free(mgr);
|
||||
}
|
||||
@@ -334,7 +334,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYNACK_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
// S2C SYNACK dup Packet
|
||||
printf("\n=> Packet Parse: TCP S2C SYNACK dup packet\n");
|
||||
@@ -349,7 +349,7 @@ TEST(TCP_DUPKT_FILTER_DISABLE, SYNACK_DUP)
|
||||
EXPECT_TRUE(session_has_dup_traffic(sess) == 0);
|
||||
stat = session_manager_get_stat(mgr);
|
||||
EXPECT_TRUE(stat);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_hit_dup == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_duped_bypass == 0);
|
||||
|
||||
session_manager_free(mgr);
|
||||
}
|
||||
|
||||
@@ -86,8 +86,8 @@ TEST(TCP_OVERLOAD, EVICT_OLD_SESS)
|
||||
EXPECT_TRUE(stat->nr_tcp_sess_closing == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_sess_closed == RX_BURST_MAX); // have evicted, have't free
|
||||
EXPECT_TRUE(stat->nr_tcp_sess_evicted == RX_BURST_MAX);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_no_space == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_miss_sess == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_nospace_bypass == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_nosess_bypass == 0);
|
||||
|
||||
session_manager_free(mgr);
|
||||
}
|
||||
@@ -127,8 +127,8 @@ TEST(TCP_OVERLOAD, EVICT_NEW_SESS)
|
||||
EXPECT_TRUE(stat->nr_tcp_sess_closing == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_sess_closed == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_sess_evicted == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_no_space == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_miss_sess == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_nospace_bypass == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_nosess_bypass == 0);
|
||||
|
||||
// table full, evict new session
|
||||
for (uint32_t i = 0; i < RX_BURST_MAX; i++)
|
||||
@@ -147,8 +147,8 @@ TEST(TCP_OVERLOAD, EVICT_NEW_SESS)
|
||||
EXPECT_TRUE(stat->nr_tcp_sess_closing == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_sess_closed == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_sess_evicted == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_no_space == RX_BURST_MAX);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_bypass_miss_sess == 0);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_nospace_bypass == RX_BURST_MAX);
|
||||
EXPECT_TRUE(stat->nr_tcp_pkts_nosess_bypass == 0);
|
||||
|
||||
session_manager_free(mgr);
|
||||
}
|
||||
|
||||
@@ -87,8 +87,8 @@ TEST(UDP_OVERLOAD, EVICT_OLD_SESS)
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closing == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closed == RX_BURST_MAX); // have evicted, have't free
|
||||
EXPECT_TRUE(stat->nr_udp_sess_evicted == RX_BURST_MAX);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_no_space == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_hit_evc == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_nospace_bypass == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_evctd_bypass == 0);
|
||||
|
||||
// evicted session
|
||||
while (1)
|
||||
@@ -120,8 +120,8 @@ TEST(UDP_OVERLOAD, EVICT_OLD_SESS)
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closing == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closed == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_sess_evicted == RX_BURST_MAX);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_no_space == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_hit_evc == RX_BURST_MAX);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_nospace_bypass == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_evctd_bypass == RX_BURST_MAX);
|
||||
|
||||
// evicted session timeout
|
||||
packet_set_ip_src_addr(&pkt, 0);
|
||||
@@ -137,8 +137,8 @@ TEST(UDP_OVERLOAD, EVICT_OLD_SESS)
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closing == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closed == 1); // have evicted, have't free
|
||||
EXPECT_TRUE(stat->nr_udp_sess_evicted == RX_BURST_MAX + 1);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_no_space == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_hit_evc == RX_BURST_MAX);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_nospace_bypass == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_evctd_bypass == RX_BURST_MAX);
|
||||
|
||||
session_manager_free(mgr);
|
||||
}
|
||||
@@ -178,8 +178,8 @@ TEST(UDP_OVERLOAD, EVICT_NEW_SESS)
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closing == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closed == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_sess_evicted == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_no_space == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_hit_evc == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_nospace_bypass == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_evctd_bypass == 0);
|
||||
|
||||
// evicted session
|
||||
EXPECT_TRUE(session_manager_get_evicted_session(mgr) == NULL);
|
||||
@@ -201,8 +201,8 @@ TEST(UDP_OVERLOAD, EVICT_NEW_SESS)
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closing == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_sess_closed == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_sess_evicted == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_no_space == RX_BURST_MAX);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_bypass_hit_evc == 0);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_nospace_bypass == RX_BURST_MAX);
|
||||
EXPECT_TRUE(stat->nr_udp_pkts_evctd_bypass == 0);
|
||||
|
||||
session_manager_free(mgr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user