4 Commits

Author SHA1 Message Date
lijia
1b30b6d6a2 TSG-8372, 增加三层vlan 自测试用例. 2021-11-08 16:03:29 +08:00
lijia
e1bf15c222 TSG-8372, 修复不支持三层vlan跳转. 2021-11-08 14:19:37 +08:00
lijia
e683d478a8 修复CI编译错误. 2021-10-29 11:41:09 +08:00
lijia
7a0b7d2316 修复CI编译错误. 2021-10-29 11:10:32 +08:00
5 changed files with 135 additions and 12 deletions

View File

@@ -77,7 +77,7 @@ develop_build_debug:
PULP3_REPO_NAME: framework-testing-x86_64.el7 PULP3_REPO_NAME: framework-testing-x86_64.el7
PULP3_DIST_NAME: framework-testing-x86_64.el7 PULP3_DIST_NAME: framework-testing-x86_64.el7
artifacts: artifacts:
name: MESA_jump_layer-$CI_COMMIT_REF_NAME-debug" name: libMESA_jump_layer-$CI_COMMIT_REF_NAME-debug"
paths: paths:
- /builds/MESA_framework/mesa_jump_layer/build/test/gtest_jump_layer - /builds/MESA_framework/mesa_jump_layer/build/test/gtest_jump_layer
- /builds/MESA_framework/mesa_jump_layer/build/src/libMESA_jump_layer.so - /builds/MESA_framework/mesa_jump_layer/build/src/libMESA_jump_layer.so
@@ -98,7 +98,7 @@ develop_build_release:
PULP3_REPO_NAME: framework-testing-x86_64.el7 PULP3_REPO_NAME: framework-testing-x86_64.el7
PULP3_DIST_NAME: framework-testing-x86_64.el7 PULP3_DIST_NAME: framework-testing-x86_64.el7
artifacts: artifacts:
name: MESA_jump_layer-$CI_COMMIT_REF_NAME-release" name: libMESA_jump_layer-$CI_COMMIT_REF_NAME-release"
paths: paths:
- build/*.rpm - build/*.rpm
- /builds/MESA_framework/mesa_jump_layer/build/test/gtest_jump_layer - /builds/MESA_framework/mesa_jump_layer/build/test/gtest_jump_layer
@@ -117,7 +117,7 @@ release_build_debug:
PULP3_DIST_NAME: framework-stable-x86_64.el7 PULP3_DIST_NAME: framework-stable-x86_64.el7
extends: .build_by_travis extends: .build_by_travis
artifacts: artifacts:
name: MESA_jump_layer-$CI_COMMIT_REF_NAME-debug" name: libMESA_jump_layer-$CI_COMMIT_REF_NAME-release"
paths: paths:
- build/*.rpm - build/*.rpm
- /builds/MESA_framework/mesa_jump_layer/build/test/gtest_jump_layer - /builds/MESA_framework/mesa_jump_layer/build/test/gtest_jump_layer
@@ -137,7 +137,7 @@ release_build_release:
PULP3_DIST_NAME: framework-stable-x86_64.el7 PULP3_DIST_NAME: framework-stable-x86_64.el7
extends: .build_by_travis extends: .build_by_travis
artifacts: artifacts:
name: MESA_jump_layer-$CI_COMMIT_REF_NAME-release" name: libMESA_jump_layer-$CI_COMMIT_REF_NAME-release"
paths: paths:
- build/*.rpm - build/*.rpm
- /builds/MESA_framework/mesa_jump_layer/build/test/gtest_jump_layer - /builds/MESA_framework/mesa_jump_layer/build/test/gtest_jump_layer

View File

@@ -19,9 +19,18 @@ add_definitions(-std=c++11)
set(SRC MESA_jump_layer.cpp) set(SRC MESA_jump_layer.cpp)
add_library(${lib_name} SHARED ${SRC}) # Shared Library Output
target_link_libraries(${lib_name} m) add_library(${lib_name}_shared SHARED ${SRC})
target_link_libraries(${lib_name}_shared m)
if(DEFINED MESA_SHARED_INSTALL_DIR)
set_target_properties(${lib_name}_shared PROPERTIES OUTPUT_NAME ${lib_name} LIBRARY_OUTPUT_DIRECTORY ${MESA_SHARED_INSTALL_DIR})
else()
set_target_properties(${lib_name}_shared PROPERTIES OUTPUT_NAME ${lib_name})
endif()
target_link_libraries(${lib_name}_shared m)
install(FILES ${CMAKE_BINARY_DIR}/src/libMESA_jump_layer.so DESTINATION ${CMAKE_INSTALL_PREFIX}/lib COMPONENT LIBRARIES) install(TARGETS ${lib_name}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib COMPONENT LIBRARIES)
#install(FILES ${CMAKE_BINARY_DIR}/src/libMESA_jump_layer.so DESTINATION ${CMAKE_INSTALL_PREFIX}/lib COMPONENT LIBRARIES)
include(Package)

View File

@@ -1187,6 +1187,7 @@ static int vlan8021q_jump_to_layer(const char *raw_data, int raw_layer_type, in
/* QinQ */ /* QinQ */
case ETH_P_8021Q: case ETH_P_8021Q:
snprintf(_g_mesa_jump_layer_last_error, PIPE_BUF, "vlan8021q_jump_to_layer(): multiple VLAN combine to one layer!"); snprintf(_g_mesa_jump_layer_last_error, PIPE_BUF, "vlan8021q_jump_to_layer(): multiple VLAN combine to one layer!");
skip_len = -1;
assert(0); assert(0);
break; break;

View File

@@ -34,11 +34,6 @@
#define GTEST_SAPP_ERR (-1) #define GTEST_SAPP_ERR (-1)
#define GTEST_SAPP_SUCC 0 #define GTEST_SAPP_SUCC 0
static void sendto_test_result(int n)
{
}
static pcap_t *g_jmp_pcap_handle; static pcap_t *g_jmp_pcap_handle;
@@ -1279,6 +1274,124 @@ TEST(jump_layer, eth_vlan_ip6_udp_gtpext_ip4_tcp)
ASSERT_EQ(chk_res, 0); ASSERT_EQ(chk_res, 0);
} }
static void jump_layer_eth_vxlan_3vlan_ipv4_udp(u_char *result_val, const struct pcap_pkthdr *hdr, const u_char *data)
{
int ret;
const void *eth_header = data;
const void *outer_ipv4_header;
const void *outer_udp_header;
//const void *gtp_header;
const void *inner_ipv4_header;
outer_ipv4_header = MESA_net_jump_to_layer(eth_header, ADDR_TYPE_MAC, ADDR_TYPE_IPV4);
if(NULL == outer_ipv4_header){
printf("\033[1;31;40m jump_layer_eth_vxlan_3vlan_ipv4_udp(): eth->ipv4 error!\033[0m\n");
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
ret = jump_check_ipv4_pkt((struct ip *)outer_ipv4_header, 209, IPPROTO_UDP, "10.10.0.8", "10.252.20.1");
if(ret < 0){
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
outer_udp_header = MESA_net_jump_to_layer(eth_header, ADDR_TYPE_MAC, ADDR_TYPE_UDP);
if(NULL == outer_udp_header){
printf("\033[1;31;40m jump_layer_eth_vxlan_3vlan_ipv4_udp(): eth->vlan->ipv6->udp error!\033[0m\n");
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
ret = jump_check_udp_pkt((const struct udphdr *)outer_udp_header, 189, 61717, 4789);
if(ret < 0){
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
const struct ethhdr *inner_mac_header = (struct ethhdr *)MESA_jump_layer_greedy(outer_ipv4_header, ADDR_TYPE_IPV4, ADDR_TYPE_MAC);
if(NULL == inner_mac_header){
printf("\033[1;31;jump_layer_eth_vxlan_3vlan_ipv4_udp(): eth->ipv6->udp->vxlan->mac error!\033[0m\n");
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
const unsigned char expect_src_mac[6] = {0x6c, 0x3b, 0x6b, 0xc0, 0x01, 0x1f};
const unsigned char expect_dst_mac[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
if(memcmp(inner_mac_header->h_source, expect_src_mac, 6) != 0){
printf("\033[1;31;jump_layer_eth_vxlan_3vlan_ipv4_udp(): eth->ipv6->udp->vxlan->src_mac error!\033[0m\n");
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
if(memcmp(inner_mac_header->h_dest, expect_dst_mac, 6) != 0){
printf("\033[1;31;jump_layer_eth_vxlan_3vlan_ipv4_udp(): eth->ipv6->udp->vxlan->dst_mac error!\033[0m\n");
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
inner_ipv4_header = ( struct ip *)MESA_jump_layer_greedy(eth_header, ADDR_TYPE_MAC, ADDR_TYPE_IPV4);
if(NULL == inner_ipv4_header){
printf("\033[1;31;jump_layer_eth_vxlan_3vlan_ipv4_udp(): eth->ipv6->udp->gtp->ipv4 error!\033[0m\n");
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
ret = jump_check_ipv4_pkt((struct ip *)inner_ipv4_header, 147, IPPROTO_UDP, "0.0.0.0", "255.255.255.255");
if(ret < 0){
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
const void *greedy_udp_hdr = MESA_jump_layer_greedy(eth_header, ADDR_TYPE_MAC, ADDR_TYPE_UDP);
if(NULL == greedy_udp_hdr){
printf("\033[1;31;40m jump_layer_eth_vxlan_3vlan_ipv4_udp(): greedy jump eth->vlan->ipv6->udp error!\033[0m\n");
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
ret = jump_check_udp_pkt((const struct udphdr *)greedy_udp_hdr, 127, 5678, 5678);
if(ret < 0){
*result_val = -1;
pcap_breakloop(g_jmp_pcap_handle);
return;
}
printf("\033[32m jump_layer_eth_vxlan_3vlan_ipv4_udp() test succ\033[0m\n");
*result_val = 0;
return;
}
#define __jump_layer_eth_vxlan_3vlan_ipv4_udp 1
TEST(jump_layer, eth_vxlan_3vlan_ipv4_udp)
{
int fun_ret;
u_char chk_res = -1;
fun_ret = jmp_file_md5_checksum("./sample_pcap/vxlan_inner_3_vlan_udp.pcap", "3d9da66edfe7e8958f797ca57fff9ba5");
ASSERT_EQ(fun_ret, 0);
fun_ret = jmp_pcap_init("./sample_pcap/vxlan_inner_3_vlan_udp.pcap", jump_layer_eth_vxlan_3vlan_ipv4_udp, (u_char *)&chk_res);
ASSERT_EQ(fun_ret, 0);
ASSERT_EQ(chk_res, 0);
}
/*
TODO:
基础协议跳转测试用例;
各种隧道嵌套协议跳转测试用例.
*/
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {

Binary file not shown.