reactor packet I/O & duplicated packet filter & evicted session filter
This commit is contained in:
@@ -1,7 +1,3 @@
|
||||
###############################################################################
|
||||
# gtest
|
||||
###############################################################################
|
||||
|
||||
add_executable(gtest_ipv4_reassembly gtest_ipv4_reassembly.cpp)
|
||||
target_link_libraries(gtest_ipv4_reassembly ip_reassembly gtest)
|
||||
|
||||
|
||||
@@ -196,7 +196,7 @@ TEST(IPV4_REASSEMBLE, PADDING_ORDER)
|
||||
{
|
||||
struct packet pkt;
|
||||
struct packet *new_pkt;
|
||||
const struct layer_record *layer;
|
||||
const struct layer *layer;
|
||||
struct ip_reassembly *mgr;
|
||||
struct ip_reassembly_options opts = {
|
||||
.enable = true,
|
||||
@@ -205,11 +205,9 @@ TEST(IPV4_REASSEMBLE, PADDING_ORDER)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -218,9 +216,9 @@ TEST(IPV4_REASSEMBLE, PADDING_ORDER)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
1, 1, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -229,9 +227,9 @@ TEST(IPV4_REASSEMBLE, PADDING_ORDER)
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
2, 1, 1, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -291,7 +289,7 @@ TEST(IPV4_REASSEMBLE, PADDING_UNORDER)
|
||||
{
|
||||
struct packet pkt;
|
||||
struct packet *new_pkt;
|
||||
const struct layer_record *layer;
|
||||
const struct layer *layer;
|
||||
struct ip_reassembly *mgr;
|
||||
struct ip_reassembly_options opts = {
|
||||
.enable = true,
|
||||
@@ -300,11 +298,9 @@ TEST(IPV4_REASSEMBLE, PADDING_UNORDER)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -313,9 +309,9 @@ TEST(IPV4_REASSEMBLE, PADDING_UNORDER)
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
1, 1, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -324,9 +320,9 @@ TEST(IPV4_REASSEMBLE, PADDING_UNORDER)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
2, 1, 1, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -394,11 +390,9 @@ TEST(IPV4_REASSEMBLE, EXPIRE)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -407,24 +401,20 @@ TEST(IPV4_REASSEMBLE, EXPIRE)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
1, 1, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
0, 0, 0, 0, // ip6: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// sleep 1s
|
||||
sleep(1);
|
||||
timestamp_update();
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 2);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
2, 2, 1, 1, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -443,7 +433,7 @@ TEST(IPV4_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
{
|
||||
struct packet pkt;
|
||||
struct packet *new_pkt;
|
||||
const struct layer_record *layer;
|
||||
const struct layer *layer;
|
||||
struct ip_reassembly *mgr;
|
||||
struct ip_reassembly_options opts = {
|
||||
.enable = true,
|
||||
@@ -452,11 +442,9 @@ TEST(IPV4_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -465,9 +453,9 @@ TEST(IPV4_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
1, 1, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -476,9 +464,9 @@ TEST(IPV4_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
2, 1, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 1, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -487,9 +475,9 @@ TEST(IPV4_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
3, 1, 1, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 1, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -549,7 +537,7 @@ TEST(IPV4_REASSEMBLE, DUP_LAST_FRAG)
|
||||
{
|
||||
struct packet pkt;
|
||||
struct packet *new_pkt;
|
||||
const struct layer_record *layer;
|
||||
const struct layer *layer;
|
||||
struct ip_reassembly *mgr;
|
||||
struct ip_reassembly_options opts = {
|
||||
.enable = true,
|
||||
@@ -558,11 +546,9 @@ TEST(IPV4_REASSEMBLE, DUP_LAST_FRAG)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -571,9 +557,9 @@ TEST(IPV4_REASSEMBLE, DUP_LAST_FRAG)
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
1, 1, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -582,9 +568,9 @@ TEST(IPV4_REASSEMBLE, DUP_LAST_FRAG)
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
2, 1, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 1, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -593,9 +579,9 @@ TEST(IPV4_REASSEMBLE, DUP_LAST_FRAG)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
3, 1, 1, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 1, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -663,11 +649,9 @@ TEST(IPV4_REASSEMBLE, FULL)
|
||||
.bucket_num = 1,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -680,9 +664,9 @@ TEST(IPV4_REASSEMBLE, FULL)
|
||||
|
||||
// flow1
|
||||
packet_set_ipv4_src_addr(&pkt, 1);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
1, 1, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -691,9 +675,9 @@ TEST(IPV4_REASSEMBLE, FULL)
|
||||
|
||||
// flow2
|
||||
packet_set_ipv4_src_addr(&pkt, 2);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
2, 2, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -702,9 +686,9 @@ TEST(IPV4_REASSEMBLE, FULL)
|
||||
|
||||
// flow3
|
||||
packet_set_ipv4_src_addr(&pkt, 3);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
3, 2, 0, 0, // ip4: find, add, del, timeout
|
||||
1, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
@@ -607,7 +607,7 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
{
|
||||
struct packet pkt;
|
||||
struct packet *new_pkt;
|
||||
const struct layer_record *layer;
|
||||
const struct layer *layer;
|
||||
struct ip_reassembly *mgr;
|
||||
struct ip_reassembly_options opts = {
|
||||
.enable = true,
|
||||
@@ -616,11 +616,9 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -629,9 +627,9 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -640,9 +638,9 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -651,9 +649,9 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
|
||||
// frag3
|
||||
packet_parse(&pkt, (const char *)frag3, sizeof(frag3));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -662,9 +660,9 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
|
||||
// frag4
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -726,11 +724,9 @@ TEST(IPV6_REASSEMBLE, EXPIRE)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -739,24 +735,20 @@ TEST(IPV6_REASSEMBLE, EXPIRE)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
1, 1, 0, 0, // ip6: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// sleep 1
|
||||
sleep(1);
|
||||
timestamp_update();
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 2);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -775,7 +767,7 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
{
|
||||
struct packet pkt;
|
||||
struct packet *new_pkt;
|
||||
const struct layer_record *layer;
|
||||
const struct layer *layer;
|
||||
struct ip_reassembly *mgr;
|
||||
struct ip_reassembly_options opts = {
|
||||
.enable = true,
|
||||
@@ -784,11 +776,9 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -797,9 +787,9 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -808,9 +798,9 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -819,9 +809,9 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -830,9 +820,9 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
|
||||
// frag3
|
||||
packet_parse(&pkt, (const char *)frag3, sizeof(frag3));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -841,9 +831,9 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
|
||||
// frag4
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -897,7 +887,7 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
{
|
||||
struct packet pkt;
|
||||
struct packet *new_pkt;
|
||||
const struct layer_record *layer;
|
||||
const struct layer *layer;
|
||||
struct ip_reassembly *mgr;
|
||||
struct ip_reassembly_options opts = {
|
||||
.enable = true,
|
||||
@@ -906,11 +896,9 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -919,9 +907,9 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
|
||||
// frag4
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -930,9 +918,9 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
|
||||
// frag4
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -941,9 +929,9 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
|
||||
// frag3
|
||||
packet_parse(&pkt, (const char *)frag3, sizeof(frag3));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -952,9 +940,9 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -963,9 +951,9 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -1028,11 +1016,9 @@ TEST(IPV6_REASSEMBLE, FULL)
|
||||
.bucket_num = 1,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -1046,9 +1032,9 @@ TEST(IPV6_REASSEMBLE, FULL)
|
||||
// flow1
|
||||
memset(&src_addr, 1, sizeof(src_addr));
|
||||
packet_set_ipv6_src_addr(&pkt, src_addr);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -1058,9 +1044,9 @@ TEST(IPV6_REASSEMBLE, FULL)
|
||||
// flow2
|
||||
memset(&src_addr, 2, sizeof(src_addr));
|
||||
packet_set_ipv6_src_addr(&pkt, src_addr);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -1070,9 +1056,9 @@ TEST(IPV6_REASSEMBLE, FULL)
|
||||
// flow3
|
||||
memset(&src_addr, 3, sizeof(src_addr));
|
||||
packet_set_ipv6_src_addr(&pkt, src_addr);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -1099,11 +1085,9 @@ TEST(IPV6_REASSEMBLE, OVERLAP)
|
||||
.bucket_num = 8,
|
||||
};
|
||||
|
||||
timestamp_update();
|
||||
|
||||
mgr = ip_reassembly_new(&opts);
|
||||
EXPECT_TRUE(mgr != NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -1112,9 +1096,9 @@ TEST(IPV6_REASSEMBLE, OVERLAP)
|
||||
|
||||
// frag1
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -1123,9 +1107,9 @@ TEST(IPV6_REASSEMBLE, OVERLAP)
|
||||
|
||||
// frag2
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -1137,9 +1121,9 @@ TEST(IPV6_REASSEMBLE, OVERLAP)
|
||||
memcpy(dup_frag, frag3, sizeof(frag3));
|
||||
packet_parse(&pkt, (const char *)dup_frag, sizeof(dup_frag));
|
||||
packet_set_ipv6_frag_offset(&pkt, 2048);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
@@ -1148,9 +1132,9 @@ TEST(IPV6_REASSEMBLE, OVERLAP)
|
||||
|
||||
// frag4
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt);
|
||||
new_pkt = ip_reassembly_packet(mgr, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
// ip_reassembly_print_stat(mgr);
|
||||
|
||||
check_stat(ip_reassembly_get_stat(mgr),
|
||||
0, 0, 0, 0, // ip4: find, add, del, timeout
|
||||
0, 0, 0, 0, 0, 0, // ip4: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
@@ -8,17 +8,15 @@ extern "C"
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "timestamp.h"
|
||||
#include "udp_utils.h"
|
||||
#include "tcp_utils.h"
|
||||
#include "ipv4_utils.h"
|
||||
#include "ipv6_utils.h"
|
||||
#include "packet_utils.h"
|
||||
#include "ip_reassembly.h"
|
||||
|
||||
static inline void packet_set_ipv4_src_addr(struct packet *pkt, uint32_t saddr)
|
||||
{
|
||||
const struct layer_record *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_TYPE_IPV4);
|
||||
const struct layer *ipv4_layer = packet_get_innermost_layer(pkt, LAYER_TYPE_IPV4);
|
||||
EXPECT_TRUE(ipv4_layer);
|
||||
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
|
||||
ipv4_hdr_set_src_addr(hdr, saddr);
|
||||
@@ -26,7 +24,7 @@ static inline void packet_set_ipv4_src_addr(struct packet *pkt, uint32_t saddr)
|
||||
|
||||
static inline void packet_set_ipv6_src_addr(struct packet *pkt, struct in6_addr saddr)
|
||||
{
|
||||
const struct layer_record *ipv6_layer = packet_get_innermost_layer(pkt, LAYER_TYPE_IPV6);
|
||||
const struct layer *ipv6_layer = packet_get_innermost_layer(pkt, LAYER_TYPE_IPV6);
|
||||
EXPECT_TRUE(ipv6_layer);
|
||||
struct ip6_hdr *hdr = (struct ip6_hdr *)ipv6_layer->hdr_ptr;
|
||||
ipv6_hdr_set_src_in6_addr(hdr, saddr);
|
||||
@@ -34,7 +32,7 @@ static inline void packet_set_ipv6_src_addr(struct packet *pkt, struct in6_addr
|
||||
|
||||
static inline void packet_set_ipv6_frag_offset(struct packet *pkt, uint16_t offset)
|
||||
{
|
||||
const struct layer_record *ipv6_layer = (struct layer_record *)packet_get_innermost_layer(pkt, LAYER_TYPE_IPV6);
|
||||
const struct layer *ipv6_layer = (struct layer *)packet_get_innermost_layer(pkt, LAYER_TYPE_IPV6);
|
||||
EXPECT_TRUE(ipv6_layer);
|
||||
struct ip6_hdr *hdr = (struct ip6_hdr *)ipv6_layer->hdr_ptr;
|
||||
struct ip6_frag *frag_hdr = ipv6_hdr_get_frag_ext(hdr);
|
||||
|
||||
Reference in New Issue
Block a user