From 88509fe353767cbde707c3e3b1f29392957819f3 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Tue, 24 Mar 2020 17:34:14 +0000 Subject: [HICN-574] Host stack plugin for VPP. Signed-off-by: Mauro Sardara Change-Id: I8d8fdffef31a7013265d6529c5f52f3d5ec70d18 Signed-off-by: Mauro Sardara Signed-off-by: Mauro Signed-off-by: Mauro Sardara --- lib/includes/hicn/ops.h | 14 ++++++++++++++ lib/src/CMakeLists.txt | 4 ++-- lib/src/ops.c | 1 + lib/src/protocol/ah.c | 3 ++- lib/src/protocol/icmp.c | 1 + lib/src/protocol/ipv4.c | 6 ++++++ lib/src/protocol/ipv6.c | 6 ++++++ lib/src/protocol/tcp.c | 7 +++++++ 8 files changed, 39 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/includes/hicn/ops.h b/lib/includes/hicn/ops.h index e8feff92d..bcb73171e 100644 --- a/lib/includes/hicn/ops.h +++ b/lib/includes/hicn/ops.h @@ -121,6 +121,16 @@ typedef struct hicn_ops_s */ int (*mark_packet_as_data) (hicn_type_t type, hicn_protocol_t * h); + /** + * @brief Check if currentpacket is interest + * @param [in] type - hICN packet type + * @param [in,out] h - Buffer holding the Interest packet + * @param [out] ret - Return 1 if interest + * @return hICN error code + */ + int (*test_packet_is_interest) (hicn_type_t type, hicn_protocol_t * h, + u8 *ret); + /** * @brief Clear the necessary Interest fields in order to hash it * @param [in] type - hICN packet type @@ -456,6 +466,7 @@ typedef struct hicn_ops_s ATTR_INIT(set_interest_name_suffix, protocol ## _set_interest_name_suffix), \ ATTR_INIT(mark_packet_as_interest, protocol ## _mark_packet_as_interest), \ ATTR_INIT(mark_packet_as_data, protocol ## _mark_packet_as_data), \ + ATTR_INIT(test_packet_is_interest, protocol ## _test_packet_is_interest), \ ATTR_INIT(reset_interest_for_hash, protocol ## _reset_interest_for_hash), \ ATTR_INIT(get_data_locator, protocol ## _get_data_locator), \ ATTR_INIT(set_data_locator, protocol ## _set_data_locator), \ @@ -561,6 +572,9 @@ PAYLOAD (hicn_type_t type, const hicn_protocol_t * h) #define DECLARE_mark_packet_as_data(protocol, error) \ int protocol ## _mark_packet_as_data(hicn_type_t type, hicn_protocol_t * h) { return HICN_LIB_ERROR_ ## error ; } +#define DECLARE_test_packet_is_interest(protocol, error) \ + int protocol ## _test_packet_is_interest(hicn_type_t type, hicn_protocol_t * h, u8 *ret) { return HICN_LIB_ERROR_ ## error ; } + #define DECLARE_reset_interest_for_hash(protocol, error) \ int protocol ## _reset_interest_for_hash(hicn_type_t type, hicn_protocol_t * h) { return HICN_LIB_ERROR_ ## error ; } diff --git a/lib/src/CMakeLists.txt b/lib/src/CMakeLists.txt index 7eecaf775..49b735f51 100644 --- a/lib/src/CMakeLists.txt +++ b/lib/src/CMakeLists.txt @@ -42,7 +42,7 @@ if (DISABLE_SHARED_LIBRARIES) COMPONENT lib${LIBHICN} INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../includes DEFINITIONS ${COMPILER_DEFINITIONS} - INSTALL_ROOT_DIR hicn + HEADER_ROOT_DIR hicn INSTALL_HEADERS ${LIBHICN_HEADER_FILES} ${LIBHICN_HEADER_FILES_PROTOCOL} ${LIBHICN_HEADER_FILES_UTIL} LINK_LIBRARIES ${WSOCK32_LIBRARY} ${WS2_32_LIBRARY} ) @@ -53,7 +53,7 @@ else () COMPONENT lib${LIBHICN} INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../includes DEFINITIONS ${COMPILER_DEFINITIONS} - INSTALL_ROOT_DIR hicn + HEADER_ROOT_DIR hicn INSTALL_HEADERS ${LIBHICN_HEADER_FILES} ${LIBHICN_HEADER_FILES_PROTOCOL} ${LIBHICN_HEADER_FILES_UTIL} LINK_LIBRARIES ${WSOCK32_LIBRARY} ${WS2_32_LIBRARY} ) diff --git a/lib/src/ops.c b/lib/src/ops.c index d49138398..919567721 100644 --- a/lib/src/ops.c +++ b/lib/src/ops.c @@ -42,6 +42,7 @@ DECLARE_get_interest_name_suffix (none, NONE); DECLARE_set_interest_name_suffix (none, NONE); DECLARE_mark_packet_as_interest (none, NONE); DECLARE_mark_packet_as_data (none, NONE); +DECLARE_test_packet_is_interest (none, NONE); DECLARE_reset_interest_for_hash (none, NONE); DECLARE_get_data_locator (none, NONE); DECLARE_set_data_locator (none, NONE); diff --git a/lib/src/protocol/ah.c b/lib/src/protocol/ah.c index da08d1ee8..6f143238a 100644 --- a/lib/src/protocol/ah.c +++ b/lib/src/protocol/ah.c @@ -32,7 +32,8 @@ DECLARE_set_interest_name (ah, UNEXPECTED); DECLARE_get_interest_name_suffix (ah, UNEXPECTED); DECLARE_set_interest_name_suffix (ah, UNEXPECTED); DECLARE_mark_packet_as_interest (ah, UNEXPECTED) -DECLARE_mark_packet_as_data (ah, UNEXPECTED) +DECLARE_mark_packet_as_data (ah, UNEXPECTED); +DECLARE_test_packet_is_interest (ah, UNEXPECTED); DECLARE_get_data_locator (ah, UNEXPECTED); DECLARE_set_data_locator (ah, UNEXPECTED); DECLARE_get_data_name (ah, UNEXPECTED); diff --git a/lib/src/protocol/icmp.c b/lib/src/protocol/icmp.c index b24c0f11e..40a93b099 100644 --- a/lib/src/protocol/icmp.c +++ b/lib/src/protocol/icmp.c @@ -27,6 +27,7 @@ DECLARE_get_interest_name_suffix (icmp, UNEXPECTED) DECLARE_set_interest_name_suffix (icmp, UNEXPECTED) DECLARE_mark_packet_as_interest (icmp, UNEXPECTED) DECLARE_mark_packet_as_data (icmp, UNEXPECTED) +DECLARE_test_packet_is_interest (icmp, UNEXPECTED) DECLARE_get_data_locator (icmp, UNEXPECTED) DECLARE_set_data_locator (icmp, UNEXPECTED) DECLARE_get_data_name (icmp, UNEXPECTED) diff --git a/lib/src/protocol/ipv4.c b/lib/src/protocol/ipv4.c index 5ad4ddbfa..4bab9980b 100644 --- a/lib/src/protocol/ipv4.c +++ b/lib/src/protocol/ipv4.c @@ -116,6 +116,12 @@ ipv4_mark_packet_as_data (hicn_type_t type, hicn_protocol_t * h) return CHILD_OPS (mark_packet_as_data, type, h); } +int +ipv4_test_packet_is_interest (hicn_type_t type, hicn_protocol_t * h, u8 *ret) +{ + return CHILD_OPS (test_packet_is_interest, type, h, ret); +} + int ipv4_reset_interest_for_hash (hicn_type_t type, hicn_protocol_t * h) { diff --git a/lib/src/protocol/ipv6.c b/lib/src/protocol/ipv6.c index 9db3e3a17..b0ba3117d 100644 --- a/lib/src/protocol/ipv6.c +++ b/lib/src/protocol/ipv6.c @@ -106,6 +106,12 @@ ipv6_mark_packet_as_data (hicn_type_t type, hicn_protocol_t * h) return CHILD_OPS (mark_packet_as_data, type, h); } +int +ipv6_test_packet_is_interest (hicn_type_t type, hicn_protocol_t * h, u8 *ret) +{ + return CHILD_OPS (test_packet_is_interest, type, h, ret); +} + int ipv6_reset_interest_for_hash (hicn_type_t type, hicn_protocol_t * h) { diff --git a/lib/src/protocol/tcp.c b/lib/src/protocol/tcp.c index 31c495ff4..ec1eb27dc 100644 --- a/lib/src/protocol/tcp.c +++ b/lib/src/protocol/tcp.c @@ -96,6 +96,13 @@ tcp_mark_packet_as_data (hicn_type_t type, hicn_protocol_t * h) return HICN_LIB_ERROR_NONE; } +int +tcp_test_packet_is_interest (hicn_type_t type, hicn_protocol_t * h, u8 *ret) +{ + *ret = !(h->tcp.flags & HICN_TCP_FLAG_ECE); + return HICN_LIB_ERROR_NONE; +} + int tcp_reset_interest_for_hash (hicn_type_t type, hicn_protocol_t * h) { -- cgit 1.2.3-korg