From b99651da62483fb532ccb0b1a301249617548b61 Mon Sep 17 00:00:00 2001 From: lijia Date: Wed, 27 Oct 2021 17:01:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91=E9=94=99?= =?UTF-8?q?=E8=AF=AF,=20=E5=A2=9E=E5=8A=A0test=20stage.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 6 +- CMakeLists.txt | 3 +- src/CMakeLists.txt | 2 + test/gtest_jump_layer.cpp | 124 +++++++++++++++++-------------- test/sample_pcap/udp_simple.pcap | Bin 0 -> 229 bytes 5 files changed, 77 insertions(+), 58 deletions(-) create mode 100644 test/sample_pcap/udp_simple.pcap diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 49fa02b..bc6aade 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,13 +13,13 @@ stages: google_test: stage: test script: - - yum makecache - pwd - - ls -l /opt/MESA/lib - echo "/opt/MESA/lib" >> /etc/ld.so.conf - ldconfig - - cd /home/mesasoft/sapp_run + - cp -r test/sample_pcap /tmp + - cp test/gtest_jump_layer /tmp - ulimit -c 0 + - cd /tmp - ./gtest_jump_layer tags: - share diff --git a/CMakeLists.txt b/CMakeLists.txt index bafb94d..a77f55a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,8 @@ add_subdirectory(./vendor) add_subdirectory(./src) add_subdirectory(./test) -install(TARGETS ${lib_name} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib COMPONENT LIBRARY) +#install(TARGETS ${lib_name}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib COMPONENT LIBRARY) + install(FILES inc/MESA_jump_layer.h DESTINATION ${CMAKE_INSTALL_PREFIX}/include/MESA COMPONENT HEADER) include(Package) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 558a10a..4f7e250 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,3 +21,5 @@ add_library(${lib_name} SHARED MESA_jump_layer.cpp) target_link_libraries(${lib_name} m) +install(FILES ${CMAKE_BINARY_DIR}/src/libMESA_jump_layer.so DESTINATION ${CMAKE_INSTALL_PREFIX}/lib COMPONENT LIBRARY) + diff --git a/test/gtest_jump_layer.cpp b/test/gtest_jump_layer.cpp index e2dd1a1..3edb923 100644 --- a/test/gtest_jump_layer.cpp +++ b/test/gtest_jump_layer.cpp @@ -215,6 +215,7 @@ static void jump_layer_eth_ipv4_tcp(u_char *result_val, const struct pcap_pkthdr printf("\033[1;31;40mMESA_net_jump_to_layer(): eth->ipv4 error!\033[0m\n"); *result_val = -1; pcap_breakloop(g_jmp_pcap_handle); + return; } const struct ip* ip4hdr = (struct ip*)ipv4_header; @@ -225,6 +226,7 @@ static void jump_layer_eth_ipv4_tcp(u_char *result_val, const struct pcap_pkthdr printf("\033[1;31;40mMESA_net_jump_to_layer(): ipv4->tcp error!\033[0m\n"); *result_val = -1; pcap_breakloop(g_jmp_pcap_handle); + return; } tcp_header = MESA_net_jump_to_layer(eth_header, ADDR_TYPE_MAC, ADDR_TYPE_TCP); @@ -232,6 +234,7 @@ static void jump_layer_eth_ipv4_tcp(u_char *result_val, const struct pcap_pkthdr printf("\033[1;31;40mMESA_net_jump_to_layer(): eth->tcp error!\033[0m\n"); *result_val = -1; pcap_breakloop(g_jmp_pcap_handle); + return; } tcp_header = MESA_net_jump_to_layer(ipv4_header, __ADDR_TYPE_IP_PAIR_V4, ADDR_TYPE_TCP); @@ -239,6 +242,7 @@ static void jump_layer_eth_ipv4_tcp(u_char *result_val, const struct pcap_pkthdr printf("\033[1;31;40mMESA_net_jump_to_layer(): ipv4->tcp error!\033[0m\n"); *result_val = -1; pcap_breakloop(g_jmp_pcap_handle); + return; } const struct tcphdr* thdr = (struct tcphdr *)tcp_header; @@ -251,6 +255,7 @@ static void jump_layer_eth_ipv4_tcp(u_char *result_val, const struct pcap_pkthdr pcap_breakloop(g_jmp_pcap_handle); } +#define __jump_layer_eth_ipv4_tcp 1 TEST(jump_layer, eth_ipv4_tcp) { int fun_ret; @@ -265,69 +270,80 @@ TEST(jump_layer, eth_ipv4_tcp) ASSERT_EQ(chk_res, 0); } -#if 0 -extern "C" char jump_layer_eth_ipv4_udp_entry(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet) + + +static void jump_layer_eth_ipv4_udp(u_char *result_val, const struct pcap_pkthdr *hdr, const u_char *data) { int ret; - int tot_pkt_len; - const void *pkt_header; + const void *eth_header = data, *ipv4_header, *udp_header; const void *next_header; + + ipv4_header = MESA_net_jump_to_layer(data, ADDR_TYPE_MAC, ADDR_TYPE_IPV4); + if(NULL == ipv4_header){ + printf("\033[1;31;40mjump_layer_eth_ipv4_udp(): eth->ipv4 error!\033[0m\n"); + *result_val = -1; + pcap_breakloop(g_jmp_pcap_handle); + return; + } + + udp_header = MESA_net_jump_to_layer((void *)ipv4_header, ADDR_TYPE_IPV4, ADDR_TYPE_UDP); + if(NULL == udp_header){ + printf("\033[1;31;40mjump_layer_eth_ipv4_udp(): ipv4->udp error!\033[0m\n"); + *result_val = -1; + pcap_breakloop(g_jmp_pcap_handle); + return; + } + + udp_header = MESA_net_jump_to_layer((void *)eth_header, ADDR_TYPE_MAC, ADDR_TYPE_UDP); + if(NULL == udp_header){ + printf("\033[1;31;40mjump_layer_eth_ipv4_udp(): ethernet->udp error!\033[0m\n"); + *result_val = -1; + pcap_breakloop(g_jmp_pcap_handle); + return; + } + + const struct ip* ip4hdr = (struct ip*)ipv4_header; + ret = jump_check_ipv4_pkt(ip4hdr, 175, IPPROTO_UDP, "192.168.210.153", "111.161.107.181"); + if(ret < 0){ + *result_val = -1; + pcap_breakloop(g_jmp_pcap_handle); + return; + } - if(pstream->opstate == OP_STATE_PENDING){ - next_header = MESA_net_jump_to_layer((void *)a_packet, ADDR_TYPE_IPV4, ADDR_TYPE_UDP); - if(NULL == next_header){ - printf("\033[1;31;40mMESA_net_jump_to_layer(): ipv4->udp error!\033[0m\n"); - sendto_test_result(GTEST_SAPP_ERR); - exit(1); - } - ret = get_rawpkt_opt_from_streaminfo(pstream, RAW_PKT_GET_DATA, &pkt_header); - if(ret < 0){ - printf("\033[1;31;40mjump_layer_eth_ipv4_udp_entry(), get_rawpkt_opt_from_streaminfo()->RAW_PKT_GET_DATA error!\033[0m\n"); - sendto_test_result(GTEST_SAPP_ERR); - exit(1); - } - ret = get_rawpkt_opt_from_streaminfo(pstream, RAW_PKT_GET_TOT_LEN, &tot_pkt_len); - if(ret < 0){ - printf("\033[1;31;40mjump_layer_eth_ipv4_udp_entry(), get_rawpkt_opt_from_streaminfo()->RAW_PKT_GET_TOT_LEN error!\033[0m\n"); - sendto_test_result(GTEST_SAPP_ERR); - exit(1); - } - - next_header = MESA_net_jump_to_layer(pkt_header, ADDR_TYPE_MAC, ADDR_TYPE_IPV4); - if(NULL == next_header){ - printf("\033[1;31;40mMESA_net_jump_to_layer(): eth->ipv4 error!\033[0m\n"); - sendto_test_result(GTEST_SAPP_ERR); - exit(1); - } - - if(next_header != a_packet){ - printf("\033[1;31;40mMESA_net_jump_to_layer(): ip header is not equal with plug_entry->a_packet!\033[0m\n"); - sendto_test_result(GTEST_SAPP_ERR); - exit(1); - } - - const struct ip* ip4hdr = (struct ip*)next_header; - - jump_check_ipv4_pkt(ip4hdr, tot_pkt_len-sizeof(struct ethhdr), IPPROTO_UDP, "192.168.210.153", "111.161.107.181"); - - next_header = MESA_net_jump_to_layer((void *)ip4hdr, __ADDR_TYPE_IP_PAIR_V4, ADDR_TYPE_UDP); - if(NULL == next_header){ - printf("\033[1;31;40mMESA_net_jump_to_layer(): ipv4->udp error!\033[0m\n"); - sendto_test_result(GTEST_SAPP_ERR); - exit(1); - } - - const struct udphdr* uhdr = (struct udphdr *)next_header; - jump_check_udp_pkt(uhdr, 155, 4001, 8000); - - printf("\033[32mjump_layer_eth_ipv4_udp_entry() test succ\033[0m\n"); - sendto_test_result(GTEST_SAPP_SUCC); + const struct udphdr* uhdr = (struct udphdr *)udp_header; + ret = jump_check_udp_pkt(uhdr, 155, 4001, 8000); + if(ret < 0){ + *result_val = -1; + pcap_breakloop(g_jmp_pcap_handle); + return; } - return APP_STATE_DROPME; + printf("\033[32mjump_layer_eth_ipv4_udp() test succ\033[0m\n"); + *result_val = 0; + + return; } +#define __jump_layer_eth_ipv4_udp 1 +TEST(jump_layer, eth_ipv4_udp) +{ + int fun_ret; + u_char chk_res = -1; + + fun_ret = jmp_file_md5_checksum("./sample_pcap/udp_simple.pcap", "d218d9a401588f7ba324d8a02c2d8360"); + ASSERT_EQ(fun_ret, 0); + + fun_ret = jmp_pcap_init("./sample_pcap/udp_simple.pcap", jump_layer_eth_ipv4_udp, (u_char *)&chk_res); + ASSERT_EQ(fun_ret, 0); + + ASSERT_EQ(chk_res, 0); +} + + +#if 0 + + extern "C" char jump_layer_eth_ipv6_tcp_entry(struct streaminfo *pstream,void **pme, int thread_seq, void *a_packet) { diff --git a/test/sample_pcap/udp_simple.pcap b/test/sample_pcap/udp_simple.pcap new file mode 100644 index 0000000000000000000000000000000000000000..3fcaef6c886d4ad2a9de16502468d7ea959f93c7 GIT binary patch literal 229 zcmca|c+)~A1{MYw;8$m0U<7iwzt+U)zu;ro3uJ>Z%fi4}%&iQn62_r3IT&0S7}f_K zV_;|yth|3<#ig0~3$wTKFO+v+m@OyAWFE+&TCBjZj3)lVk+XGp6RG0xU?o=ND literal 0 HcmV?d00001