diff --git a/common/src/tfe_packet_io.cpp b/common/src/tfe_packet_io.cpp index f505636..283c047 100644 --- a/common/src/tfe_packet_io.cpp +++ b/common/src/tfe_packet_io.cpp @@ -1060,7 +1060,6 @@ static void packet_io_send_fake_pkt(struct packet_io_thread_ctx *thread, struct int raw_traffic_decapsulate(struct packet *handler, const char *raw_data, int raw_len, char **header, int *header_len, int *is_ipv4) { - const struct layer_record *l2_tun_layer_record = NULL; const struct layer_record *l3_layer_record = NULL; const struct layer_record *l4_layer_record = NULL; @@ -1076,8 +1075,6 @@ int raw_traffic_decapsulate(struct packet *handler, const char *raw_data, int ra return -1; *is_ipv4 = l3_layer_record->type == LAYER_TYPE_IPV4 ? 1 : 0; - l2_tun_layer_record = packet_get_innermost_layer(handler, LAYER_TYPE_L2_TUN); - *header_len = l3_layer_record->hdr_offset; *header = (char *)calloc(*header_len, sizeof(char)); memcpy(*header, raw_data, *header_len); diff --git a/common/test/CMakeLists.txt b/common/test/CMakeLists.txt index f90cf32..121fc3d 100644 --- a/common/test/CMakeLists.txt +++ b/common/test/CMakeLists.txt @@ -26,9 +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) +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 @@ -38,4 +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(gtest_raw_packet) diff --git a/common/test/test_raw_packet.cpp b/common/test/test_raw_packet.cpp index 112843f..4e328cd 100644 --- a/common/test/test_raw_packet.cpp +++ b/common/test/test_raw_packet.cpp @@ -9,6 +9,45 @@ 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); +struct tcp_policy_enforcer +{ + int tcp_policy_enforcer; +}; +struct tfe_cmsg +{ + int tfe_cmsg; +}; + +int tcp_policy_enforce(struct tcp_policy_enforcer *tcp_enforcer, struct tfe_cmsg *cmsg) +{ + return 0; +} + +struct chaining_policy_enforcer +{ + int chaining_policy_enforcer; +}; + +void chaining_policy_enforce(struct chaining_policy_enforcer *enforcer, struct tfe_cmsg *cmsg, uint64_t rule_id) +{ + return; +} + +struct tfe_proxy +{ + int tfe_proxy; +}; + +int tfe_proxy_fds_accept(struct tfe_proxy *ctx, int fd_downstream, int fd_upstream, int fd_fake_c, int fd_fake_s, struct tfe_cmsg *cmsg) +{ + return 0; +} + +unsigned int tfe_proxy_get_work_thread_count(void) +{ + return 0; +} + /****************************************************************************** * Pcap file: 1-ETH_VLAN_VLAN_IP4_IP4_UDP.pcap * [Protocols in frame: eth:ethertype:vlan:ethertype:vlan:ethertype:ip:ip:udp:data] @@ -193,11 +232,17 @@ TEST(RAW_PACKET, ETH_IP6_IP4_TCP_SSH) int header_len = 0; int is_ipv4 = 0; struct packet pkt; + unsigned char header_data[] = { + 0x00, 0x22, 0x46, 0x36, 0x51, 0x38, 0x00, 0x22, 0x46, 0x36, 0x51, 0x3c, 0x86, 0xdd, 0x60, 0x00, 0x00, 0x00, 0x02, 0xa0, 0x04, 0x40, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x92, 0x01, 0x68, 0x00, 0x40, 0x01, 0x34, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x92, 0x01, 0x68, 0x00, 0x40, + 0x01, 0x33 + }; 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); + EXPECT_TRUE(memcmp(header_data, header, header_len) == 0); + EXPECT_TRUE(header_len == 54); + EXPECT_TRUE(is_ipv4 == 1); } /****************************************************************************** @@ -370,11 +415,16 @@ TEST(RAW_PACKET, ETH_IP4_IP6_TCP) int header_len = 0; int is_ipv4 = 0; struct packet pkt; + unsigned char header_data[] = { + 0x5c, 0x5e, 0xab, 0x2a, 0xa2, 0x00, 0x2c, 0x6b, 0xf5, 0x45, 0x88, 0x29, 0x08, 0x00, 0x45, 0x00, 0x00, 0x5c, 0x0b, 0x4d, 0x00, 0x00, 0x3b, 0x29, 0x09, 0xc8, + 0xd2, 0x4d, 0x58, 0xa3, 0x3b, 0x42, 0x04, 0x32 + }; 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); + EXPECT_TRUE(memcmp(header_data, header, header_len) == 0); + EXPECT_TRUE(header_len == 34); + EXPECT_TRUE(is_ipv4 == 0); } /****************************************************************************** @@ -501,11 +551,15 @@ TEST(RAW_PACKET, ETH_MPLS_IP4_TCP) int header_len = 0; int is_ipv4 = 0; struct packet pkt; + unsigned char header_data[] = { + 0xd4, 0x6a, 0xa8, 0x7f, 0xeb, 0xf7, 0x00, 0x23, 0x89, 0xd9, 0x28, 0xcc, 0x88, 0x47, 0x00, 0x01, 0x2d, 0xfe + }; 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(memcmp(header_data, header, header_len) == 0); EXPECT_TRUE(header_len == 18); + EXPECT_TRUE(is_ipv4 == 1); } /****************************************************************************** @@ -575,11 +629,15 @@ TEST(RAW_PACKET, ETH_MPLS_MPLS_IP4_TCP) int header_len = 0; int is_ipv4 = 0; struct packet pkt; + unsigned char header_data[] = { + 0x00, 0x30, 0x96, 0xe6, 0xfc, 0x39, 0x00, 0x30, 0x96, 0x05, 0x28, 0x38, 0x88, 0x47, 0x00, 0x01, 0x2a, 0xff, 0x00, 0x01, 0x0b, 0xff + }; 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(memcmp(header_data, header, header_len) == 0); EXPECT_TRUE(header_len == 22); + EXPECT_TRUE(is_ipv4 == 1); } /****************************************************************************** @@ -654,11 +712,15 @@ TEST(RAW_PACKET, ETH_VLAN_PPPOE_IP4_TCP) int header_len = 0; int is_ipv4 = 0; struct packet pkt; + unsigned char header_data[] = { + 0x18, 0x10, 0x04, 0x00, 0x02, 0x27, 0x00, 0x00, 0x00, 0x00, 0x04, 0x46, 0x81, 0x00, 0x65, 0xc4, 0x88, 0x64, 0x11, 0x00, 0xb4, 0xbc, 0x00, 0x36, 0x00, 0x21 + }; 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(memcmp(header_data, header, header_len) == 0); EXPECT_TRUE(header_len == 26); + EXPECT_TRUE(is_ipv4 == 1); } /****************************************************************************** @@ -792,11 +854,17 @@ TEST(RAW_PACKET, ETH_IP6_UDP_GTP_IP6_TCP_TLS) int header_len = 0; int is_ipv4 = 0; struct packet pkt; + unsigned char header_data[] = { + 0xac, 0xb3, 0xb5, 0x40, 0xe9, 0xc2, 0x74, 0x4a, 0xa4, 0x0e, 0xf5, 0x40, 0x86, 0xdd, 0x60, 0x00, 0x00, 0x00, 0x05, 0x6c, 0x11, 0x7f, 0x24, 0x09, 0x80, 0x34, + 0x40, 0x40, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x24, 0x09, 0x80, 0x34, 0x40, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x61, 0x08, 0x68, 0x08, 0x68, 0x05, 0x6c, 0xeb, 0x00, 0x30, 0xff, 0x05, 0x5c, 0x02, 0x4c, 0x3c, 0xbd + }; 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); + EXPECT_TRUE(memcmp(header_data, header, header_len) == 0); + EXPECT_TRUE(header_len == 70); + EXPECT_TRUE(is_ipv4 == 0); } /****************************************************************************** @@ -937,11 +1005,17 @@ TEST(RAW_PACKET, ETH_IP6_UDP_GTP_IP4_TCP_TLS) int header_len = 0; int is_ipv4 = 0; struct packet pkt; + unsigned char header_data[] = { + 0x74, 0x4a, 0xa4, 0x0e, 0xf5, 0x1c, 0x60, 0xd7, 0x55, 0x62, 0xee, 0x70, 0x86, 0xdd, 0x60, 0x00, 0x00, 0x00, 0x05, 0x88, 0x11, 0xfc, 0x24, 0x09, 0x80, 0x34, + 0x40, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0a, 0x31, 0x24, 0x09, 0x80, 0x34, 0x40, 0x40, 0x53, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x04, 0x08, 0x68, 0x08, 0x68, 0x05, 0x88, 0xc8, 0xdf, 0x30, 0xff, 0x05, 0x78, 0x6c, 0x2a, 0x47, 0x53 + }; 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); + EXPECT_TRUE(memcmp(header_data, header, header_len) == 0); + EXPECT_TRUE(header_len == 70); + EXPECT_TRUE(is_ipv4 == 1); } /******************************************************************************