Refactored packet API to support struct layer (using union to contain different types of encapsulation headers)
This commit is contained in:
@@ -215,6 +215,7 @@ TEST(IPV4_REASSEMBLE, PADDING_ORDER)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -226,6 +227,7 @@ TEST(IPV4_REASSEMBLE, PADDING_ORDER)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
@@ -308,6 +310,7 @@ TEST(IPV4_REASSEMBLE, PADDING_UNORDER)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -319,6 +322,7 @@ TEST(IPV4_REASSEMBLE, PADDING_UNORDER)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
@@ -400,6 +404,7 @@ TEST(IPV4_REASSEMBLE, EXPIRE)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -411,6 +416,7 @@ TEST(IPV4_REASSEMBLE, EXPIRE)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 2);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -452,6 +458,7 @@ TEST(IPV4_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -463,6 +470,7 @@ TEST(IPV4_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -474,6 +482,7 @@ TEST(IPV4_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
@@ -556,6 +565,7 @@ TEST(IPV4_REASSEMBLE, DUP_LAST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -567,6 +577,7 @@ TEST(IPV4_REASSEMBLE, DUP_LAST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -578,6 +589,7 @@ TEST(IPV4_REASSEMBLE, DUP_LAST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
@@ -660,6 +672,7 @@ TEST(IPV4_REASSEMBLE, FULL)
|
||||
|
||||
char dup_frag[sizeof(frag1)] = {0};
|
||||
memcpy(dup_frag, frag1, sizeof(frag1));
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)dup_frag, sizeof(dup_frag));
|
||||
|
||||
// flow1
|
||||
|
||||
@@ -626,6 +626,7 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -637,6 +638,7 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -648,6 +650,7 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag3
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag3, sizeof(frag3));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -659,6 +662,7 @@ TEST(IPV6_REASSEMBLE, NORMAL)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag4
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
@@ -734,6 +738,7 @@ TEST(IPV6_REASSEMBLE, EXPIRE)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -745,6 +750,7 @@ TEST(IPV6_REASSEMBLE, EXPIRE)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 2);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -786,6 +792,7 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -797,6 +804,7 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -808,6 +816,7 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
0, 0, 0, 0, 1, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -819,6 +828,7 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
0, 0, 0, 0, 1, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag3
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag3, sizeof(frag3));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -830,6 +840,7 @@ TEST(IPV6_REASSEMBLE, DUP_FIRST_FRAG)
|
||||
0, 0, 0, 0, 1, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag4
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
@@ -906,6 +917,7 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag4
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -917,6 +929,7 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag4
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -928,6 +941,7 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
0, 0, 0, 0, 0, 1); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag3
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag3, sizeof(frag3));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -939,6 +953,7 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
0, 0, 0, 0, 0, 1); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -950,6 +965,7 @@ TEST(IPV6_REASSEMBLE, DUP_LAST_FRAG)
|
||||
0, 0, 0, 0, 0, 1); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt);
|
||||
@@ -1027,6 +1043,7 @@ TEST(IPV6_REASSEMBLE, FULL)
|
||||
|
||||
char dup_frag[sizeof(frag1)] = {0};
|
||||
memcpy(dup_frag, frag1, sizeof(frag1));
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)dup_frag, sizeof(dup_frag));
|
||||
|
||||
// flow1
|
||||
@@ -1095,6 +1112,7 @@ TEST(IPV6_REASSEMBLE, OVERLAP)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag1
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag1, sizeof(frag1));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -1106,6 +1124,7 @@ TEST(IPV6_REASSEMBLE, OVERLAP)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag2
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag2, sizeof(frag2));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
@@ -1119,6 +1138,7 @@ TEST(IPV6_REASSEMBLE, OVERLAP)
|
||||
// frag3 -- overwrite frag offset
|
||||
char dup_frag[sizeof(frag3)] = {0};
|
||||
memcpy(dup_frag, frag3, sizeof(frag3));
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)dup_frag, sizeof(dup_frag));
|
||||
packet_set_ipv6_frag_offset(&pkt, 2048);
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
@@ -1131,6 +1151,7 @@ TEST(IPV6_REASSEMBLE, OVERLAP)
|
||||
0, 0, 0, 0, 0, 0); // ip6: nospace, overlap, many frag, invalid length, dup first frag, dup last frag
|
||||
|
||||
// frag4
|
||||
memset(&pkt, 0, sizeof(pkt));
|
||||
packet_parse(&pkt, (const char *)frag4, sizeof(frag4));
|
||||
new_pkt = ip_reassembly_packet(assy, &pkt, 1);
|
||||
EXPECT_TRUE(new_pkt == NULL);
|
||||
|
||||
@@ -14,6 +14,7 @@ extern "C"
|
||||
#include "ipv6_utils.h"
|
||||
#include "ip_reassembly.h"
|
||||
#include "packet_priv.h"
|
||||
#include "packet_utils.h"
|
||||
|
||||
static inline void packet_set_ipv4_src_addr(struct packet *pkt, uint32_t saddr)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user