diff options
Diffstat (limited to 'hicn-plugin/src')
-rw-r--r-- | hicn-plugin/src/CMakeLists.txt | 14 | ||||
-rw-r--r-- | hicn-plugin/src/faces/face.c | 1 | ||||
-rw-r--r-- | hicn-plugin/src/faces/face.h | 5 | ||||
-rw-r--r-- | hicn-plugin/src/faces/iface_node.c | 10 | ||||
-rw-r--r-- | hicn-plugin/src/hicn.h | 1 | ||||
-rw-r--r-- | hicn-plugin/src/interest_hitcs_node.c | 3 |
6 files changed, 24 insertions, 10 deletions
diff --git a/hicn-plugin/src/CMakeLists.txt b/hicn-plugin/src/CMakeLists.txt index 14eb23d70..d81ed22b7 100644 --- a/hicn-plugin/src/CMakeLists.txt +++ b/hicn-plugin/src/CMakeLists.txt @@ -177,13 +177,6 @@ endif (NOT CMAKE_BUILD_TYPE) SET(HICN_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} CACHE STRING "hicn_install_prefix") -if (CMAKE_BUILD_TYPE STREQUAL "Release") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -march=native -O3 -g -Wno-address-of-packed-member") -elseif (CMAKE_BUILD_TYPE STREQUAL "Debug") - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -march=native -O0 -g -Wno-address-of-packed-member") - add_definitions(-DCLIB_DEBUG -fPIC -fstack-protector-all) -endif() - file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/hicn) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/vapi) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/vnet/ip) @@ -259,12 +252,19 @@ set_target_properties(hicn_plugin PROPERTIES LINKER_LANGUAGE C INSTALL_RPATH ${VPP_INSTALL_PLUGIN} + COMPILE_FLAGS "-march=native -Wno-address-of-packed-member" PREFIX "") set_target_properties(hicn_api_test_plugin PROPERTIES LINKER_LANGUAGE C + COMPILE_FLAGS "-march=native -Wno-address-of-packed-member" PREFIX "") +if (${CMAKE_BUILD_TYPE} MATCHES "Debug") + target_compile_definitions(hicn_plugin PRIVATE "CLIB_DEBUG") + target_compile_definitions(hicn_api_test_plugin PRIVATE "CLIB_DEBUG") +endif() + message (STATUS "hicn-plugin variable ${HICN_PLUGIN}") install(DIRECTORY diff --git a/hicn-plugin/src/faces/face.c b/hicn-plugin/src/faces/face.c index 7ddf38910..d62054365 100644 --- a/hicn-plugin/src/faces/face.c +++ b/hicn-plugin/src/faces/face.c @@ -24,6 +24,7 @@ dpo_id_t *face_dpo_vec; hicn_face_vft_t *face_vft_vec; char **face_type_names_vec; +u8 pl_index = 1; hicn_face_t *hicn_dpoi_face_pool; diff --git a/hicn-plugin/src/faces/face.h b/hicn-plugin/src/faces/face.h index 234c3fcc2..95c78b206 100644 --- a/hicn-plugin/src/faces/face.h +++ b/hicn-plugin/src/faces/face.h @@ -189,6 +189,9 @@ extern hicn_face_vft_t *face_vft_vec; /* Vector holding the set of face names */ extern char **face_type_names_vec; +/* Pathlabel counter */ +extern u8 pl_index; + /* First face type registered in the sytem.*/ extern dpo_type_t first_type; @@ -526,7 +529,7 @@ hicn_iface_add (ip46_address_t * nat_address, int sw_if, face->dpo.dpoi_proto = DPO_PROTO_NONE; face->dpo.dpoi_index = adj_index; face->dpo.dpoi_next_node = 0; - face->pl_id = (u16) 0; + face->pl_id = pl_index++; face->flags = HICN_FACE_FLAGS_IFACE; face->locks = 1; diff --git a/hicn-plugin/src/faces/iface_node.c b/hicn-plugin/src/faces/iface_node.c index 8d8500995..82c0f75b2 100644 --- a/hicn-plugin/src/faces/iface_node.c +++ b/hicn-plugin/src/faces/iface_node.c @@ -535,8 +535,11 @@ hicn_rewrite_iface_data4 (vlib_main_t *vm, vlib_buffer_t *b0, ip46_address_t temp_addr; ip46_address_reset (&temp_addr); hicn_type_t type = hicn_get_buffer (b0)->type; + u8 flags = hicn_get_buffer (b0)->flags; + u8 reset_pl = flags & HICN_BUFFER_FLAGS_FROM_CS; int ret = hicn_ops_vft[type.l1]->rewrite_data ( - type, &hicn->protocol, &(iface->nat_addr), &(temp_addr), iface->pl_id); + type, &hicn->protocol, &(iface->nat_addr), &(temp_addr), + iface->pl_id, reset_pl); if (ret == HICN_LIB_ERROR_REWRITE_CKSUM_REQUIRED) { ensure_offload_flags (b0, 1 /* is_v4 */); @@ -567,8 +570,11 @@ hicn_rewrite_iface_data6 (vlib_main_t *vm, vlib_buffer_t *b0, ip46_address_t temp_addr; ip46_address_reset (&temp_addr); hicn_type_t type = hicn_get_buffer (b0)->type; + u8 flags = hicn_get_buffer (b0)->flags; + u8 reset_pl = flags & HICN_BUFFER_FLAGS_FROM_CS; int ret = hicn_ops_vft[type.l1]->rewrite_data ( - type, &hicn->protocol, &(iface->nat_addr), &(temp_addr), iface->pl_id); + type, &hicn->protocol, &(iface->nat_addr), &(temp_addr), + iface->pl_id, reset_pl); if (ret == HICN_LIB_ERROR_REWRITE_CKSUM_REQUIRED) { diff --git a/hicn-plugin/src/hicn.h b/hicn-plugin/src/hicn.h index 3d980bd49..437f91144 100644 --- a/hicn-plugin/src/hicn.h +++ b/hicn-plugin/src/hicn.h @@ -65,6 +65,7 @@ typedef u8 weight_t; #define HICN_BUFFER_FLAGS_PKT_LESS_TWO_CL 0x02 #define HICN_BUFFER_FLAGS_FROM_UDP4_TUNNEL 0x04 #define HICN_BUFFER_FLAGS_FROM_UDP6_TUNNEL 0x08 +#define HICN_BUFFER_FLAGS_FROM_CS 0x10 /* The following is stored in the opaque2 field in the vlib_buffer_t */ typedef struct diff --git a/hicn-plugin/src/interest_hitcs_node.c b/hicn-plugin/src/interest_hitcs_node.c index c2240513c..0212fa5f9 100644 --- a/hicn-plugin/src/interest_hitcs_node.c +++ b/hicn-plugin/src/interest_hitcs_node.c @@ -76,6 +76,9 @@ clone_from_cs (vlib_main_t *vm, u32 *bi0_cs, vlib_buffer_t *dest, u8 isv6) vlib_buffer_advance (cs_buf, buffer_advance); vlib_buffer_attach_clone (vm, dest, cs_buf); } + + /* Set fag for packet coming from CS */ + hicn_get_buffer (dest)->flags |= HICN_BUFFER_FLAGS_FROM_CS; } static uword |