TSG-18285 TFE的Packet IO模块支持重复流量识别

This commit is contained in:
luwenpeng
2023-12-29 17:25:18 +08:00
parent 9d3dcce1ab
commit cbd98507a2
30 changed files with 4064 additions and 1572 deletions

View File

@@ -1,10 +1,13 @@
#include <gtest/gtest.h>
#include <arpa/inet.h>
#include "tfe_raw_packet.h"
#include "packet.h"
#include "tfe_packet_io.h"
bool g_print_to_stderr = true;
void * g_packet_io_logger = NULL;
void *g_packet_io_logger = NULL;
void *g_default_logger = NULL;
extern int raw_traffic_decapsulate(struct packet *handler, const char *raw_data, int raw_len, char **header, int *header_len, int *is_ipv4);
/******************************************************************************
* Pcap file: 1-ETH_VLAN_VLAN_IP4_IP4_UDP.pcap
@@ -79,17 +82,15 @@ unsigned char data1[] = {
TEST(RAW_PACKET, ETH_VLAN_VLAN_IP4_IP4_UDP)
{
char *header = NULL;
int header_len = 0;
char *header = NULL;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data1, sizeof(data1), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data1, sizeof(data1), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
struct packet pkt;
packet_parse(&pkt, (const char *)data1, sizeof(data1));
raw_traffic_decapsulate(&pkt, (const char *)data1, sizeof(data1), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
}
/******************************************************************************
@@ -188,17 +189,15 @@ unsigned char data2[] = {
TEST(RAW_PACKET, ETH_IP6_IP4_TCP_SSH)
{
char *header = NULL;
int header_len = 0;
char *header = NULL;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
raw_packet_parser_init(&raw_parser, 0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data2, sizeof(data2), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data2, sizeof(data2), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
struct packet pkt;
packet_parse(&pkt, (const char *)data2, sizeof(data2));
raw_traffic_decapsulate(&pkt, (const char *)data2, sizeof(data2), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
}
/******************************************************************************
@@ -292,15 +291,14 @@ unsigned char data3[] = {
TEST(RAW_PACKET, ETH_VLAN_IP6_IP4_GRE_PPP_IP4_UDP_DNS)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data3, sizeof(data3), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data3, sizeof(data3), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
packet_parse(&pkt, (const char *)data3, sizeof(data3));
raw_traffic_decapsulate(&pkt, (const char *)data3, sizeof(data3), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
}
/******************************************************************************
@@ -369,15 +367,14 @@ unsigned char data4[] = {
TEST(RAW_PACKET, ETH_IP4_IP6_TCP)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data4, sizeof(data4), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data4, sizeof(data4), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
packet_parse(&pkt, (const char *)data4, sizeof(data4));
raw_traffic_decapsulate(&pkt, (const char *)data4, sizeof(data4), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
}
/******************************************************************************
@@ -432,15 +429,14 @@ unsigned char data5[] = {
TEST(RAW_PACKET, ETH_IP6_IP6_UDP)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data5, sizeof(data5), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data5, sizeof(data5), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
packet_parse(&pkt, (const char *)data5, sizeof(data5));
raw_traffic_decapsulate(&pkt, (const char *)data5, sizeof(data5), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
}
/******************************************************************************
@@ -502,15 +498,14 @@ unsigned char data6[] = {
TEST(RAW_PACKET, ETH_MPLS_IP4_TCP)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data6, sizeof(data6), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data6, sizeof(data6), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header != nullptr);
EXPECT_TRUE(header_len == 18);
packet_parse(&pkt, (const char *)data6, sizeof(data6));
raw_traffic_decapsulate(&pkt, (const char *)data6, sizeof(data6), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header != nullptr);
EXPECT_TRUE(header_len == 18);
}
/******************************************************************************
@@ -577,15 +572,14 @@ unsigned char data7[] = {
TEST(RAW_PACKET, ETH_MPLS_MPLS_IP4_TCP)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data7, sizeof(data7), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data7, sizeof(data7), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header != nullptr);
EXPECT_TRUE(header_len == 22);
packet_parse(&pkt, (const char *)data7, sizeof(data7));
raw_traffic_decapsulate(&pkt, (const char *)data7, sizeof(data7), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header != nullptr);
EXPECT_TRUE(header_len == 22);
}
/******************************************************************************
@@ -657,15 +651,14 @@ unsigned char data8[] = {
TEST(RAW_PACKET, ETH_VLAN_PPPOE_IP4_TCP)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data8, sizeof(data8), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data8, sizeof(data8), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header != nullptr);
EXPECT_TRUE(header_len == 26);
packet_parse(&pkt, (const char *)data8, sizeof(data8));
raw_traffic_decapsulate(&pkt, (const char *)data8, sizeof(data8), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header != nullptr);
EXPECT_TRUE(header_len == 26);
}
/******************************************************************************
@@ -796,15 +789,14 @@ unsigned char data9[] = {
TEST(RAW_PACKET, ETH_IP6_UDP_GTP_IP6_TCP_TLS)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data9, sizeof(data9), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data9, sizeof(data9), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
packet_parse(&pkt, (const char *)data9, sizeof(data9));
raw_traffic_decapsulate(&pkt, (const char *)data9, sizeof(data9), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
}
/******************************************************************************
@@ -942,15 +934,14 @@ unsigned char data10[] = {
TEST(RAW_PACKET, ETH_IP6_UDP_GTP_IP4_TCP_TLS)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data10, sizeof(data10), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data10, sizeof(data10), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
packet_parse(&pkt, (const char *)data10, sizeof(data10));
raw_traffic_decapsulate(&pkt, (const char *)data10, sizeof(data10), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
}
/******************************************************************************
@@ -1030,15 +1021,14 @@ unsigned char data11[] = {
TEST(RAW_PACKET, ETH_IP4_UDP_VXLAN_ETH_IP4_UDP_DNS)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data11, sizeof(data11), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data11, sizeof(data11), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
packet_parse(&pkt, (const char *)data11, sizeof(data11));
raw_traffic_decapsulate(&pkt, (const char *)data11, sizeof(data11), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
}
/******************************************************************************
@@ -1080,15 +1070,14 @@ unsigned char data12[] = {
TEST(RAW_PACKET, ETH_MPLS_MPLS_PWETHCW_ETH_ARP)
{
char *header = NULL;
int header_len = 0;
int header_len = 0;
int is_ipv4 = 0;
struct raw_pkt_parser raw_parser;
struct packet pkt;
raw_packet_parser_init(&raw_parser,0, LAYER_TYPE_ALL, 8);
raw_packet_parser_parse(&raw_parser, (const void *)data12, sizeof(data12), g_packet_io_logger);
raw_traffic_decapsulate(&raw_parser, (char *)data12, sizeof(data12), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
packet_parse(&pkt, (const char *)data12, sizeof(data12));
raw_traffic_decapsulate(&pkt, (const char *)data12, sizeof(data12), &header, &header_len, &is_ipv4);
EXPECT_TRUE(header == nullptr);
EXPECT_TRUE(header_len == 0);
}
int main(int argc, char **argv)