TSG-18285 TFE的Packet IO模块支持重复流量识别
This commit is contained in:
@@ -26,16 +26,9 @@ target_link_libraries(gtest_session_table common gtest)
|
||||
# gtest_raw_packet
|
||||
###############################################################################
|
||||
|
||||
add_executable(gtest_raw_packet test_raw_packet.cpp)
|
||||
target_include_directories(gtest_raw_packet PUBLIC ${CMAKE_SOURCE_DIR}/common/include)
|
||||
target_link_libraries(gtest_raw_packet common gtest)
|
||||
|
||||
###############################################################################
|
||||
# test_fixed_buffer
|
||||
###############################################################################
|
||||
|
||||
#add_executable(test_fixed_buffer test_fixed_buffer.cpp ${CMAKE_SOURCE_DIR}/common/src/fixed_buffer.cpp)
|
||||
#target_include_directories(test_fixed_buffer PUBLIC ${CMAKE_SOURCE_DIR}/common/include)
|
||||
#add_executable(gtest_raw_packet test_raw_packet.cpp)
|
||||
#target_include_directories(gtest_raw_packet PUBLIC ${CMAKE_SOURCE_DIR}/common/include)
|
||||
#target_link_libraries(gtest_raw_packet common gtest)
|
||||
|
||||
###############################################################################
|
||||
# gtest_discover_tests
|
||||
@@ -45,5 +38,4 @@ include(GoogleTest)
|
||||
gtest_discover_tests(gtest_addr)
|
||||
gtest_discover_tests(gtest_cmsg)
|
||||
gtest_discover_tests(gtest_session_table)
|
||||
gtest_discover_tests(gtest_raw_packet)
|
||||
#gtest_discover_tests(test_fixed_buffer)
|
||||
#gtest_discover_tests(gtest_raw_packet)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -3,8 +3,26 @@
|
||||
|
||||
#include "tfe_session_table.h"
|
||||
|
||||
#define INIT_ADDR_V4(addr, src_ip_str, src_port_num, dst_ip_str, dst_port_num) \
|
||||
struct tuple4 addr; \
|
||||
memset(&addr, 0, sizeof(addr)); \
|
||||
addr.ip_type = IP_TYPE_V4; \
|
||||
addr.src_addr.v4.s_addr = inet_addr(src_ip_str); \
|
||||
addr.dst_addr.v4.s_addr = inet_addr(dst_ip_str); \
|
||||
addr.src_port = htons(src_port_num); \
|
||||
addr.dst_port = htons(dst_port_num);
|
||||
|
||||
#define INIT_ADDR_V6(addr, src_ip_str, src_port_num, dst_ip_str, dst_port_num) \
|
||||
struct tuple4 addr; \
|
||||
memset(&addr, 0, sizeof(addr)); \
|
||||
addr.ip_type = IP_TYPE_V6; \
|
||||
inet_pton(AF_INET6, src_ip_str, &addr.src_addr.v6); \
|
||||
inet_pton(AF_INET6, dst_ip_str, &addr.dst_addr.v6); \
|
||||
addr.src_port = htons(src_port_num); \
|
||||
addr.dst_port = htons(dst_port_num);
|
||||
|
||||
bool g_print_to_stderr = true;
|
||||
void * g_packet_io_logger = NULL;
|
||||
void *g_packet_io_logger = NULL;
|
||||
|
||||
TEST(STREAM_TABLE, INSERT)
|
||||
{
|
||||
@@ -104,10 +122,10 @@ TEST(STREAM_TABLE, SEARCH_BY_REVERSE_ADDR)
|
||||
char *val_world = strdup("WORLD");
|
||||
INIT_ADDR_V4(addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
||||
INIT_ADDR_V6(addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
||||
struct addr_tuple4 addr1_reverse;
|
||||
struct addr_tuple4 addr2_reverse;
|
||||
addr_tuple4_reverse(&addr1, &addr1_reverse);
|
||||
addr_tuple4_reverse(&addr2, &addr2_reverse);
|
||||
struct tuple4 addr1_reverse;
|
||||
struct tuple4 addr2_reverse;
|
||||
tuple4_reverse(&addr1, &addr1_reverse);
|
||||
tuple4_reverse(&addr2, &addr2_reverse);
|
||||
|
||||
// TEST Insert
|
||||
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
||||
@@ -137,10 +155,10 @@ TEST(STREAM_TABLE, DELETE_BY_ID)
|
||||
char *val_world = strdup("WORLD");
|
||||
INIT_ADDR_V4(addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
||||
INIT_ADDR_V6(addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
||||
struct addr_tuple4 addr1_reverse;
|
||||
struct addr_tuple4 addr2_reverse;
|
||||
addr_tuple4_reverse(&addr1, &addr1_reverse);
|
||||
addr_tuple4_reverse(&addr2, &addr2_reverse);
|
||||
struct tuple4 addr1_reverse;
|
||||
struct tuple4 addr2_reverse;
|
||||
tuple4_reverse(&addr1, &addr1_reverse);
|
||||
tuple4_reverse(&addr2, &addr2_reverse);
|
||||
|
||||
// TEST Insert
|
||||
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
||||
@@ -174,10 +192,10 @@ TEST(STREAM_TABLE, DELETE_BY_ADDR)
|
||||
char *val_world = strdup("WORLD");
|
||||
INIT_ADDR_V4(addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
||||
INIT_ADDR_V6(addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
||||
struct addr_tuple4 addr1_reverse;
|
||||
struct addr_tuple4 addr2_reverse;
|
||||
addr_tuple4_reverse(&addr1, &addr1_reverse);
|
||||
addr_tuple4_reverse(&addr2, &addr2_reverse);
|
||||
struct tuple4 addr1_reverse;
|
||||
struct tuple4 addr2_reverse;
|
||||
tuple4_reverse(&addr1, &addr1_reverse);
|
||||
tuple4_reverse(&addr2, &addr2_reverse);
|
||||
|
||||
// TEST Insert
|
||||
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
||||
@@ -211,10 +229,10 @@ TEST(STREAM_TABLE, DELETE_BY_REVERSE_ADDR)
|
||||
char *val_world = strdup("WORLD");
|
||||
INIT_ADDR_V4(addr1, "1.2.3.4", 1234, "4.3.2.1", 4321);
|
||||
INIT_ADDR_V6(addr2, "2:3:4::5", 2345, "5:4:3::2", 5342);
|
||||
struct addr_tuple4 addr1_reverse;
|
||||
struct addr_tuple4 addr2_reverse;
|
||||
addr_tuple4_reverse(&addr1, &addr1_reverse);
|
||||
addr_tuple4_reverse(&addr2, &addr2_reverse);
|
||||
struct tuple4 addr1_reverse;
|
||||
struct tuple4 addr2_reverse;
|
||||
tuple4_reverse(&addr1, &addr1_reverse);
|
||||
tuple4_reverse(&addr2, &addr2_reverse);
|
||||
|
||||
// TEST Insert
|
||||
EXPECT_TRUE(session_table_insert(table, 1, &addr1, val_hello, free) == 0);
|
||||
|
||||
Reference in New Issue
Block a user