Refactored packet API to support struct layer (using union to contain different types of encapsulation headers)

This commit is contained in:
luwenpeng
2024-06-14 19:24:27 +08:00
parent 1f78881cbb
commit de4c15f43c
47 changed files with 834 additions and 701 deletions

View File

@@ -66,6 +66,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN)
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt1_c2s_syn, sizeof(tcp_pkt1_c2s_syn));
printf("<= Packet Parse: done\n\n");
@@ -144,6 +145,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK)
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt2_s2c_syn_ack, sizeof(tcp_pkt2_s2c_syn_ack));
printf("<= Packet Parse: done\n\n");
@@ -222,6 +224,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK)
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt1_c2s_syn, sizeof(tcp_pkt1_c2s_syn));
printf("<= Packet Parse: done\n\n");
@@ -233,6 +236,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK)
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt2_s2c_syn_ack, sizeof(tcp_pkt2_s2c_syn_ack));
printf("<= Packet Parse: done\n\n");
@@ -311,6 +315,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt1_c2s_syn, sizeof(tcp_pkt1_c2s_syn));
printf("<= Packet Parse: done\n\n");
@@ -322,6 +327,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt2_s2c_syn_ack, sizeof(tcp_pkt2_s2c_syn_ack));
printf("<= Packet Parse: done\n\n");
@@ -333,6 +339,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_SYNACK_ACK)
// C2S ACK Packet
printf("\n=> Packet Parse: TCP C2S ACK packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt3_c2s_ack, sizeof(tcp_pkt3_c2s_ack));
printf("<= Packet Parse: done\n\n");
@@ -413,6 +420,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt1_c2s_syn, sizeof(tcp_pkt1_c2s_syn));
printf("<= Packet Parse: done\n\n");
@@ -426,6 +434,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYN_RETRANSMISSION)
printf("\n=> Packet Parse: TCP C2S SYN retransmission packet\n");
char syn_retransmission[1500] = {0};
memcpy(syn_retransmission, tcp_pkt1_c2s_syn, sizeof(tcp_pkt1_c2s_syn));
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)syn_retransmission, sizeof(tcp_pkt1_c2s_syn));
const struct raw_layer *ipv4_layer = packet_get_innermost_raw_layer(&pkt, LAYER_PROTO_IPV4);
struct ip *hdr = (struct ip *)ipv4_layer->hdr_ptr;
@@ -509,6 +518,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt2_s2c_syn_ack, sizeof(tcp_pkt2_s2c_syn_ack));
printf("<= Packet Parse: done\n\n");
@@ -522,6 +532,7 @@ TEST(TCP_INIT_TO_OPENING, BY_SYNACK_RETRANSMISSION)
printf("\n=> Packet Parse: TCP S2C SYNACK retransmission packet\n");
char tcp_pkt_s2c_synack_retransmission[1500] = {0};
memcpy(tcp_pkt_s2c_synack_retransmission, tcp_pkt2_s2c_syn_ack, sizeof(tcp_pkt2_s2c_syn_ack));
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt_s2c_synack_retransmission, sizeof(tcp_pkt2_s2c_syn_ack));
const struct raw_layer *ipv4_layer = packet_get_innermost_raw_layer(&pkt, LAYER_PROTO_IPV4);
EXPECT_TRUE(ipv4_layer);
@@ -604,6 +615,7 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC)
// C2S SYN Packet
printf("\n=> Packet Parse: TCP C2S SYN packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt1_c2s_syn, sizeof(tcp_pkt1_c2s_syn));
printf("<= Packet Parse: done\n\n");
@@ -615,6 +627,7 @@ TEST(TCP_INIT_TO_OPENING, BY_C2S_ASMMETRIC)
// C2S ACK Packet
printf("\n=> Packet Parse: TCP C2S ACK packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt3_c2s_ack, sizeof(tcp_pkt3_c2s_ack));
printf("<= Packet Parse: done\n\n");
@@ -693,6 +706,7 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
// S2C SYNACK Packet
printf("\n=> Packet Parse: TCP S2C SYNACK packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt2_s2c_syn_ack, sizeof(tcp_pkt2_s2c_syn_ack));
printf("<= Packet Parse: done\n\n");
@@ -704,6 +718,7 @@ TEST(TCP_INIT_TO_OPENING, BY_S2C_ASMMETRIC)
// S2C ACK Packet
printf("\n=> Packet Parse: TCP S2C ACK packet\n");
memset(&pkt, 0, sizeof(pkt));
packet_parse(&pkt, (const char *)tcp_pkt5_s2c_ack, sizeof(tcp_pkt5_s2c_ack));
printf("<= Packet Parse: done\n\n");