aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/.clang-format21
-rw-r--r--lib/includes/hicn/base.h18
-rw-r--r--lib/includes/hicn/common.h9
-rw-r--r--lib/includes/hicn/compat.h299
-rw-r--r--lib/includes/hicn/ops.h14
-rw-r--r--lib/src/CMakeLists.txt4
-rw-r--r--lib/src/common.c12
-rw-r--r--lib/src/compat.c472
-rw-r--r--lib/src/name.c2
-rw-r--r--lib/src/protocol/ah.c2
-rw-r--r--lib/src/protocol/icmp.c2
-rw-r--r--lib/src/protocol/ipv4.c4
-rw-r--r--lib/src/protocol/ipv6.c20
-rw-r--r--lib/src/protocol/tcp.c28
14 files changed, 531 insertions, 376 deletions
diff --git a/lib/.clang-format b/lib/.clang-format
new file mode 100644
index 000000000..8b5c955ce
--- /dev/null
+++ b/lib/.clang-format
@@ -0,0 +1,21 @@
+# Minimal clang-format version is 8
+
+BasedOnStyle: GNU
+UseTab: Always
+SpaceAfterCStyleCast: true
+SortIncludes: false
+AlignConsecutiveMacros: true
+BreakBeforeTernaryOperators: false
+BreakBeforeBinaryOperators: None
+ContinuationIndentWidth: 2
+
+ForEachMacros:
+ - 'clib_bitmap_foreach'
+ - 'pool_foreach'
+ - 'pool_foreach_index'
+ - 'vec_foreach'
+ - 'vec_foreach_backwards'
+ - 'vec_foreach_index'
+ - 'vec_foreach_index_backwards'
+ - 'vlib_foreach_rx_tx'
+
diff --git a/lib/includes/hicn/base.h b/lib/includes/hicn/base.h
index f38001d1c..797912f91 100644
--- a/lib/includes/hicn/base.h
+++ b/lib/includes/hicn/base.h
@@ -22,6 +22,7 @@
#define HICN_BASE_H
#include "common.h"
+#include <netinet/in.h>
/* Default header fields */
#define HICN_DEFAULT_TTL 254
@@ -105,6 +106,17 @@ HICN_TYPE(int x, int y, int z, int t)
#define HICN_TYPE_NONE HICN_TYPE(IPPROTO_NONE, IPPROTO_NONE, IPPROTO_NONE, IPPROTO_NONE)
/**
+ * @brief Check if type is none.
+ * @return 1 if none, 0 otherwise
+ */
+always_inline int
+hicn_type_is_none(hicn_type_t type)
+{
+ return (type.l1 == IPPROTO_NONE) && (type.l2 == IPPROTO_NONE) &&
+ (type.l3 == IPPROTO_NONE) && (type.l4 == IPPROTO_NONE);
+}
+
+/**
* @brief hICN Payload type
*
* This type distinguishes several types of data packet, which can either carry
@@ -127,7 +139,7 @@ typedef enum
* NOTE: this computation is not (yet) part of the hICN specification.
*/
-#define HICN_PATH_LABEL_MASK 0xF000 /* 1000 0000 0000 0000 */
+#define HICN_PATH_LABEL_MASK 0x000000ff
#define HICN_PATH_LABEL_SIZE 8
/**
@@ -143,8 +155,8 @@ update_pathlabel (hicn_pathlabel_t current_label, hicn_faceid_t face_id,
hicn_pathlabel_t * new_label)
{
hicn_pathlabel_t pl_face_id =
- (hicn_pathlabel_t) ((face_id & HICN_PATH_LABEL_MASK) >>
- (16 - HICN_PATH_LABEL_SIZE));
+ (hicn_pathlabel_t) (face_id & HICN_PATH_LABEL_MASK);
+
*new_label =
((current_label << 1) | (current_label >> (HICN_PATH_LABEL_SIZE - 1))) ^
pl_face_id;
diff --git a/lib/includes/hicn/common.h b/lib/includes/hicn/common.h
index 6904c6314..a5ca2878b 100644
--- a/lib/includes/hicn/common.h
+++ b/lib/includes/hicn/common.h
@@ -143,8 +143,17 @@ struct iovec
#include <vnet/ip/ip4_packet.h> // ip4_address_t
#include <vnet/ip/ip6_packet.h> // ip6_address_t
+
+#if __GNUC__ >= 9
+#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
+#endif
+
#include <vnet/ip/ip46_address.h>
+#if __GNUC__ >= 9
+#pragma GCC diagnostic pop
+#endif
+
#else
diff --git a/lib/includes/hicn/compat.h b/lib/includes/hicn/compat.h
index 2796983c6..35b6e6fc5 100644
--- a/lib/includes/hicn/compat.h
+++ b/lib/includes/hicn/compat.h
@@ -34,15 +34,15 @@
/* HICN format options */
#define HFO_INET 1 << 0
#define HFO_INET6 1 << 1
-#define HFO_TCP 1 << 2
+#define HFO_TCP 1 << 2
#define HFO_ICMP 1 << 3
-#define HFO_AH 1 << 4
+#define HFO_AH 1 << 4
#define _is_ipv4(format) ((format & HFO_INET))
#define _is_ipv6(format) ((format & HFO_INET6) >> 1)
-#define _is_tcp(format) ((format & HFO_TCP) >> 2)
-#define _is_icmp(format) ((format & HFO_ICMP) >> 3)
-#define _is_ah(format) ((format & HFO_AH) >> 4)
+#define _is_tcp(format) ((format & HFO_TCP) >> 2)
+#define _is_icmp(format) ((format & HFO_ICMP) >> 3)
+#define _is_ah(format) ((format & HFO_AH) >> 4)
typedef enum
{
@@ -54,28 +54,30 @@ typedef enum
HF_INET_TCP_AH = HFO_INET | HFO_TCP | HFO_AH,
HF_INET6_TCP_AH = HFO_INET6 | HFO_TCP | HFO_AH,
HF_INET_ICMP_AH = HFO_INET | HFO_ICMP | HFO_AH,
- HF_INET6_ICMP_AH = HFO_INET6 | HFO_ICMP | HFO_AH
+ HF_INET6_ICMP_AH = HFO_INET6 | HFO_ICMP | HFO_AH,
} hicn_format_t;
/**
- * Minimum required header length to determine the type and length of a supposed
- * hICN packet.
- * This should be equal to the maximum value over all possible hICN packet
- * formats, and less than the minimum possible IP packet size.
+ * Minimum required header length to determine the type and length of a
+ * supposed hICN packet. This should be equal to the maximum value over all
+ * possible hICN packet formats, and less than the minimum possible IP packet
+ * size.
*/
-#define HICN_V6_MIN_HDR_LEN 6 /* bytes */
-#define HICN_V4_MIN_HDR_LEN 4 /* bytes */
+#define HICN_V6_MIN_HDR_LEN 6 /* bytes */
+#define HICN_V4_MIN_HDR_LEN 4 /* bytes */
-// #define HICN_MIN_HDR_LEN ((HICN_V6_MIN_HDR_LEN > HICN_V4_MIN_HDR_LEN) ? HICN_V6_MIN_HDR_LEN : HICN_V4_MIN_HDR_LEN)
+// #define HICN_MIN_HDR_LEN ((HICN_V6_MIN_HDR_LEN > HICN_V4_MIN_HDR_LEN) ?
+// HICN_V6_MIN_HDR_LEN : HICN_V4_MIN_HDR_LEN)
#define HICN_MIN_HDR_LEN HICN_V6_MIN_HDR_LEN
/**
* @brief Parse packet headers and return hICN format
* @param [in] format - hICN Format
- * @param [in, out] packet - Buffer containing the hICN header to be initialized
+ * @param [in, out] packet - Buffer containing the hICN header to be
+ * initialized
* @return hICN error code
*/
-int hicn_packet_init_header (hicn_format_t format, hicn_header_t * packet);
+int hicn_packet_init_header (hicn_format_t format, hicn_header_t *packet);
/**
* @brief Parse packet headers and return hICN format
@@ -83,8 +85,8 @@ int hicn_packet_init_header (hicn_format_t format, hicn_header_t * packet);
* @param [out] format - hICN format
* @return hICN error code
*/
-int hicn_packet_get_format (const hicn_header_t * packet,
- hicn_format_t * format);
+int hicn_packet_get_format (const hicn_header_t *packet,
+ hicn_format_t *format);
/**
* @brief Update checksums in packet headers
@@ -92,19 +94,18 @@ int hicn_packet_get_format (const hicn_header_t * packet,
* @param [in,out] packet - packet header
* @return hICN error code
*/
-int hicn_packet_compute_checksum (hicn_format_t format,
- hicn_header_t * packet);
+int hicn_packet_compute_checksum (hicn_format_t format, hicn_header_t *packet);
/**
- * @brief compute the checksum of the packet header, adding init_sum to the final value
+ * @brief compute the checksum of the packet header, adding init_sum to the
+ * final value
* @param [in] format - hICN format
* @param [in,out] packet - packet header
* @param [in] init_sum - value to add to the final checksum
* @return hICN error code
*/
int hicn_packet_compute_header_checksum (hicn_format_t format,
- hicn_header_t * packet,
- u16 init_sum);
+ hicn_header_t *packet, u16 init_sum);
/**
* @brief Verify checksums in packet headers
@@ -112,8 +113,9 @@ int hicn_packet_compute_header_checksum (hicn_format_t format,
* @param [in,out] packet - packet header
* @return hICN error code
*/
-int hicn_packet_check_integrity (hicn_format_t format,
- hicn_header_t * packet);
+int hicn_packet_check_integrity_no_payload (hicn_format_t format,
+ hicn_header_t *packet,
+ u16 init_sum);
// this is not accounted here
/**
@@ -123,7 +125,7 @@ int hicn_packet_check_integrity (hicn_format_t format,
* @return hICN error code
*/
int hicn_packet_get_header_length_from_format (hicn_format_t format,
- size_t * header_length);
+ size_t *header_length);
/**
* @brief Return total length of hicn headers (before payload)
@@ -133,8 +135,8 @@ int hicn_packet_get_header_length_from_format (hicn_format_t format,
* @return hICN error code
*/
int hicn_packet_get_header_length (hicn_format_t format,
- const hicn_header_t * packet,
- size_t * header_length);
+ const hicn_header_t *packet,
+ size_t *header_length);
/**
* @brief Return payload length
@@ -144,8 +146,8 @@ int hicn_packet_get_header_length (hicn_format_t format,
* @return hICN error code
*/
int hicn_packet_get_payload_length (hicn_format_t format,
- const hicn_header_t * packet,
- size_t * payload_length);
+ const hicn_header_t *packet,
+ size_t *payload_length);
/**
* @brief Sets payload length
@@ -155,7 +157,7 @@ int hicn_packet_get_payload_length (hicn_format_t format,
* @return hICN error code
*/
int hicn_packet_set_payload_length (hicn_format_t format,
- hicn_header_t * packet,
+ hicn_header_t *packet,
const size_t payload_length);
/**
@@ -164,8 +166,8 @@ int hicn_packet_set_payload_length (hicn_format_t format,
* @param [in] packet_2 - Second packet
* @return 0 if both packets are considered equal, any other value otherwise.
*/
-int hicn_packet_compare (const hicn_header_t * packet1,
- const hicn_header_t * packet2);
+int hicn_packet_compare (const hicn_header_t *packet1,
+ const hicn_header_t *packet2);
/**
* @brief Retrieve the name of an interest/data packet
@@ -176,8 +178,8 @@ int hicn_packet_compare (const hicn_header_t * packet1,
* data packet (0)
* @return hICN error code
*/
-int hicn_packet_get_name (hicn_format_t format, const hicn_header_t * packet,
- hicn_name_t * name, u8 is_interest);
+int hicn_packet_get_name (hicn_format_t format, const hicn_header_t *packet,
+ hicn_name_t *name, u8 is_interest);
/**
* @brief Sets the name of an interest/data packet
@@ -188,8 +190,8 @@ int hicn_packet_get_name (hicn_format_t format, const hicn_header_t * packet,
* data packet (0)
* @return hICN error code
*/
-int hicn_packet_set_name (hicn_format_t format, hicn_header_t * packet,
- const hicn_name_t * name, u8 is_interest);
+int hicn_packet_set_name (hicn_format_t format, hicn_header_t *packet,
+ const hicn_name_t *name, u8 is_interest);
/**
* @brief Sets the payload of a packet
@@ -203,8 +205,8 @@ int hicn_packet_set_name (hicn_format_t format, hicn_header_t * packet,
* - The buffer holding payload is assumed sufficiently large
* - This function updates header fields with the new length, but no checksum.
*/
-int hicn_packet_set_payload (hicn_format_t format, hicn_header_t * packet,
- const u8 * payload, u16 payload_length);
+int hicn_packet_set_payload (hicn_format_t format, hicn_header_t *packet,
+ const u8 *payload, u16 payload_length);
/**
* @brief Retrieves the payload of a packet
@@ -212,16 +214,17 @@ int hicn_packet_set_payload (hicn_format_t format, hicn_header_t * packet,
* @param [in] packet - packet header
* @param [out] payload - pointer to buffer for storing the result
* @param [out] payload_length - size of the retreived payload
- * @param [in] hard_copy - Flag : if true (eg. 1), a copy of the payload is made
- * into the payload buffer, otherwise (0) the pointer is changed to point to the payload offset in the packet.
+ * @param [in] hard_copy - Flag : if true (eg. 1), a copy of the payload is
+ * made into the payload buffer, otherwise (0) the pointer is changed to point
+ * to the payload offset in the packet.
* @return hICN error code
*
* NOTE:
* - The buffer holding payload is assumed sufficiently large
*/
-int hicn_packet_get_payload (hicn_format_t format,
- const hicn_header_t * packet, u8 ** payload,
- size_t * payload_size, bool hard_copy);
+int hicn_packet_get_payload (hicn_format_t format, const hicn_header_t *packet,
+ u8 **payload, size_t *payload_size,
+ bool hard_copy);
/**
* @brief Retrieve the locator of an interest / data packet
@@ -232,9 +235,8 @@ int hicn_packet_get_payload (hicn_format_t format,
* data packet (0)
* @return hICN error code
*/
-int hicn_packet_get_locator (hicn_format_t format,
- const hicn_header_t * packet,
- ip_address_t * prefix, bool is_interest);
+int hicn_packet_get_locator (hicn_format_t format, const hicn_header_t *packet,
+ ip_address_t *prefix, bool is_interest);
/**
* @brief Sets the locator of an interest / data packet
@@ -245,9 +247,8 @@ int hicn_packet_get_locator (hicn_format_t format,
* data packet (0)
* @return hICN error code
*/
-int hicn_packet_set_locator (hicn_format_t format, hicn_header_t * packet,
- const ip_address_t * prefix,
- bool is_interest);
+int hicn_packet_set_locator (hicn_format_t format, hicn_header_t *packet,
+ const ip_address_t *prefix, bool is_interest);
/**
* @brief Retrieves the signature size
@@ -257,8 +258,8 @@ int hicn_packet_set_locator (hicn_format_t format, hicn_header_t * packet,
* @return hICN error code
*/
int hicn_packet_get_signature_size (hicn_format_t format,
- const hicn_header_t * packet,
- size_t * bytes);
+ const hicn_header_t *packet,
+ size_t *bytes);
/**
* @brief Sets the signature size
@@ -268,7 +269,7 @@ int hicn_packet_get_signature_size (hicn_format_t format,
* @return hICN error code
*/
int hicn_packet_set_signature_size (hicn_format_t format,
- hicn_header_t * packet, size_t bytes);
+ hicn_header_t *packet, size_t bytes);
/**
* @brief Sets the signature size
@@ -278,7 +279,7 @@ int hicn_packet_set_signature_size (hicn_format_t format,
* @return hICN error code
*/
int hicn_packet_set_signature_timestamp (hicn_format_t format,
- hicn_header_t * h,
+ hicn_header_t *h,
uint64_t signature_timestamp);
/**
@@ -289,8 +290,8 @@ int hicn_packet_set_signature_timestamp (hicn_format_t format,
* @return hICN error code
*/
int hicn_packet_get_signature_timestamp (hicn_format_t format,
- const hicn_header_t * h,
- uint64_t * signature_timestamp);
+ const hicn_header_t *h,
+ uint64_t *signature_timestamp);
/**
* @brief Sets the signature size
@@ -300,7 +301,7 @@ int hicn_packet_get_signature_timestamp (hicn_format_t format,
* @return hICN error code
*/
int hicn_packet_set_validation_algorithm (hicn_format_t format,
- hicn_header_t * h,
+ hicn_header_t *h,
uint8_t validation_algorithm);
/**
@@ -311,8 +312,8 @@ int hicn_packet_set_validation_algorithm (hicn_format_t format,
* @return hICN error code
*/
int hicn_packet_get_validation_algorithm (hicn_format_t format,
- const hicn_header_t * h,
- uint8_t * validation_algorithm);
+ const hicn_header_t *h,
+ uint8_t *validation_algorithm);
/**
* @brief Sets the signature size
@@ -321,8 +322,8 @@ int hicn_packet_get_validation_algorithm (hicn_format_t format,
* @param [in] key_id - Key id to set
* @return hICN error code
*/
-int hicn_packet_set_key_id (hicn_format_t format, hicn_header_t * h,
- uint8_t * key_id);
+int hicn_packet_set_key_id (hicn_format_t format, hicn_header_t *h,
+ uint8_t *key_id);
/**
* @brief Sets the signature size
@@ -331,8 +332,8 @@ int hicn_packet_set_key_id (hicn_format_t format, hicn_header_t * h,
* @param [out] key_id - Retrieved key id
* @return hICN error code
*/
-int hicn_packet_get_key_id (hicn_format_t format, hicn_header_t * h,
- uint8_t ** key_id, uint8_t * key_id_length);
+int hicn_packet_get_key_id (hicn_format_t format, hicn_header_t *h,
+ uint8_t **key_id, uint8_t *key_id_length);
/**
* @brief Retrieves the packet hop limit
@@ -340,7 +341,7 @@ int hicn_packet_get_key_id (hicn_format_t format, hicn_header_t * h,
* @param [out] hops - Retrieved hop limit
* @return hICN error code
*/
-int hicn_packet_get_hoplimit (const hicn_header_t * packet, u8 * hops);
+int hicn_packet_get_hoplimit (const hicn_header_t *packet, u8 *hops);
/**
* @brief Sets the packet hop limit
@@ -348,107 +349,111 @@ int hicn_packet_get_hoplimit (const hicn_header_t * packet, u8 * hops);
* @param [in] hops - Hop limit to set
* @return hICN error code
*/
-int hicn_packet_set_hoplimit (hicn_header_t * packet, u8 hops);
+int hicn_packet_set_hoplimit (hicn_header_t *packet, u8 hops);
-int hicn_packet_copy_header (hicn_format_t format,
- const hicn_header_t * packet,
- hicn_header_t * destination, bool copy_ah);
+int hicn_packet_copy_header (hicn_format_t format, const hicn_header_t *packet,
+ hicn_header_t *destination, bool copy_ah);
-int hicn_packet_get_lifetime (const hicn_header_t * packet, u32 * lifetime);
-int hicn_packet_set_lifetime (hicn_header_t * packet, u32 lifetime);
-int hicn_packet_get_reserved_bits (const hicn_header_t * packet,
- u8 * reserved_bits);
-int hicn_packet_set_reserved_bits (hicn_header_t * packet,
+int hicn_packet_get_lifetime (const hicn_header_t *packet, u32 *lifetime);
+int hicn_packet_set_lifetime (hicn_header_t *packet, u32 lifetime);
+int hicn_packet_get_reserved_bits (const hicn_header_t *packet,
+ u8 *reserved_bits);
+int hicn_packet_set_reserved_bits (hicn_header_t *packet,
const u8 reserved_bits);
-int hicn_packet_get_payload_type (const hicn_header_t * packet,
- hicn_payload_type_t * payload_type);
-int hicn_packet_set_payload_type (hicn_header_t * packet,
+int hicn_packet_get_payload_type (const hicn_header_t *packet,
+ hicn_payload_type_t *payload_type);
+int hicn_packet_set_payload_type (hicn_header_t *packet,
const hicn_payload_type_t payload_type);
-int hicn_packet_set_syn (hicn_header_t * packet);
-int hicn_packet_reset_syn (hicn_header_t * packet);
-int hicn_packet_test_syn (const hicn_header_t * packet, bool * flag);
-int hicn_packet_set_ack (hicn_header_t * packet);
-int hicn_packet_reset_ack (hicn_header_t * packet);
-int hicn_packet_test_ack (const hicn_header_t * packet, bool * flag);
-int hicn_packet_set_rst (hicn_header_t * packet);
-int hicn_packet_reset_rst (hicn_header_t * packet);
-int hicn_packet_test_rst (const hicn_header_t * packet, bool * flag);
-int hicn_packet_set_fin (hicn_header_t * packet);
-int hicn_packet_reset_fin (hicn_header_t * packet);
-int hicn_packet_test_fin (const hicn_header_t * packet, bool * flag);
-int hicn_packet_set_ece (hicn_header_t * packet);
-int hicn_packet_reset_ece (hicn_header_t * packet);
-int hicn_packet_test_ece (const hicn_header_t * packet, bool * flag);
-
-int hicn_packet_set_src_port (hicn_header_t * packet, u16 src_port);
-int hicn_packet_get_src_port (const hicn_header_t * packet, u16 * src_port);
-int hicn_packet_set_dst_port (hicn_header_t * packet, u16 dst_port);
-int hicn_packet_get_dst_port (const hicn_header_t * packet, u16 * dst_port);
-int hicn_packet_get_signature (hicn_format_t format, hicn_header_t * packet,
- uint8_t ** sign_buf);
+int hicn_packet_set_syn (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_reset_syn (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_test_syn (hicn_format_t format, const hicn_header_t *packet,
+ bool *flag);
+int hicn_packet_set_ack (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_reset_ack (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_test_ack (hicn_format_t format, const hicn_header_t *packet,
+ bool *flag);
+int hicn_packet_set_rst (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_reset_rst (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_test_rst (hicn_format_t format, const hicn_header_t *packet,
+ bool *flag);
+int hicn_packet_set_fin (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_reset_fin (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_test_fin (hicn_format_t format, const hicn_header_t *packet,
+ bool *flag);
+int hicn_packet_set_ece (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_reset_ece (hicn_format_t format, hicn_header_t *packet);
+int hicn_packet_test_ece (hicn_format_t format, const hicn_header_t *packet,
+ bool *flag);
+
+int hicn_packet_set_src_port (hicn_format_t format, hicn_header_t *packet,
+ u16 src_port);
+int hicn_packet_get_src_port (hicn_format_t format,
+ const hicn_header_t *packet, u16 *src_port);
+int hicn_packet_set_dst_port (hicn_format_t format, hicn_header_t *packet,
+ u16 dst_port);
+int hicn_packet_get_dst_port (hicn_format_t format,
+ const hicn_header_t *packet, u16 *dst_port);
+int hicn_packet_get_signature (hicn_format_t format, hicn_header_t *packet,
+ uint8_t **sign_buf);
/* Interest */
int hicn_interest_get_name (hicn_format_t format,
- const hicn_header_t * interest,
- hicn_name_t * name);
-int hicn_interest_set_name (hicn_format_t format, hicn_header_t * interest,
- const hicn_name_t * name);
+ const hicn_header_t *interest, hicn_name_t *name);
+int hicn_interest_set_name (hicn_format_t format, hicn_header_t *interest,
+ const hicn_name_t *name);
int hicn_interest_get_locator (hicn_format_t format,
- const hicn_header_t * interest,
- ip_address_t * prefix);
-int hicn_interest_set_locator (hicn_format_t format, hicn_header_t * interest,
- const ip_address_t * prefix);
-int hicn_interest_compare (const hicn_header_t * interest_1,
- const hicn_header_t * interest_2);
-int hicn_interest_set_lifetime (hicn_header_t * interest, u32 lifetime);
-int hicn_interest_get_lifetime (const hicn_header_t * interest,
- u32 * lifetime);
+ const hicn_header_t *interest,
+ ip_address_t *prefix);
+int hicn_interest_set_locator (hicn_format_t format, hicn_header_t *interest,
+ const ip_address_t *prefix);
+int hicn_interest_compare (const hicn_header_t *interest_1,
+ const hicn_header_t *interest_2);
+int hicn_interest_set_lifetime (hicn_header_t *interest, u32 lifetime);
+int hicn_interest_get_lifetime (const hicn_header_t *interest, u32 *lifetime);
int hicn_interest_get_header_length (hicn_format_t format,
- const hicn_header_t * interest,
- size_t * header_length);
+ const hicn_header_t *interest,
+ size_t *header_length);
int hicn_interest_get_payload_length (hicn_format_t format,
- const hicn_header_t * interest,
- size_t * payload_length);
-int hicn_interest_set_payload (hicn_format_t format, hicn_header_t * interest,
- const u8 * payload, size_t payload_length);
+ const hicn_header_t *interest,
+ size_t *payload_length);
+int hicn_interest_set_payload (hicn_format_t format, hicn_header_t *interest,
+ const u8 *payload, size_t payload_length);
int hicn_interest_get_payload (hicn_format_t format,
- const hicn_header_t * interest, u8 ** payload,
- size_t * payload_size, bool hard_copy);
-int hicn_interest_reset_for_hash (hicn_format_t format,
- hicn_header_t * packet);
+ const hicn_header_t *interest, u8 **payload,
+ size_t *payload_size, bool hard_copy);
+int hicn_interest_reset_for_hash (hicn_format_t format, hicn_header_t *packet);
/* Data */
-int hicn_data_get_name (hicn_format_t format, const hicn_header_t * data,
- hicn_name_t * name);
-int hicn_data_set_name (hicn_format_t format, hicn_header_t * data,
- const hicn_name_t * name);
-int hicn_data_get_locator (hicn_format_t format, const hicn_header_t * data,
- ip_address_t * prefix);
-int hicn_data_set_locator (hicn_format_t format, hicn_header_t * data,
- const ip_address_t * prefix);
-int hicn_data_compare (const hicn_header_t * data_1,
- const hicn_header_t * data_2);
-int hicn_data_get_expiry_time (const hicn_header_t * data, u32 * expiry_time);
-int hicn_data_set_expiry_time (hicn_header_t * data, u32 expiry_time);
-int hicn_data_get_header_length (hicn_format_t format, hicn_header_t * data,
- size_t * header_length);
+int hicn_data_get_name (hicn_format_t format, const hicn_header_t *data,
+ hicn_name_t *name);
+int hicn_data_set_name (hicn_format_t format, hicn_header_t *data,
+ const hicn_name_t *name);
+int hicn_data_get_locator (hicn_format_t format, const hicn_header_t *data,
+ ip_address_t *prefix);
+int hicn_data_set_locator (hicn_format_t format, hicn_header_t *data,
+ const ip_address_t *prefix);
+int hicn_data_compare (const hicn_header_t *data_1,
+ const hicn_header_t *data_2);
+int hicn_data_get_expiry_time (const hicn_header_t *data, u32 *expiry_time);
+int hicn_data_set_expiry_time (hicn_header_t *data, u32 expiry_time);
+int hicn_data_get_header_length (hicn_format_t format, hicn_header_t *data,
+ size_t *header_length);
int hicn_data_get_payload_length (hicn_format_t format,
- const hicn_header_t * data,
- size_t * payload_length);
-int hicn_data_get_path_label (const hicn_header_t * data, u32 * path_label);
-int hicn_data_set_path_label (hicn_header_t * data, u32 path_label);
-int hicn_data_get_payload (hicn_format_t format, const hicn_header_t * data,
- u8 ** payload, size_t * payload_size,
- bool hard_copy);
-int hicn_data_set_payload (hicn_format_t format, hicn_header_t * data,
- const u8 * payload, size_t payload_length);
-int hicn_data_get_payload_type (const hicn_header_t * data,
- hicn_payload_type_t * payload_type);
-int hicn_data_set_payload_type (hicn_header_t * data,
+ const hicn_header_t *data,
+ size_t *payload_length);
+int hicn_data_get_path_label (const hicn_header_t *data, u32 *path_label);
+int hicn_data_set_path_label (hicn_header_t *data, u32 path_label);
+int hicn_data_get_payload (hicn_format_t format, const hicn_header_t *data,
+ u8 **payload, size_t *payload_size, bool hard_copy);
+int hicn_data_set_payload (hicn_format_t format, hicn_header_t *data,
+ const u8 *payload, size_t payload_length);
+int hicn_data_get_payload_type (const hicn_header_t *data,
+ hicn_payload_type_t *payload_type);
+int hicn_data_set_payload_type (hicn_header_t *data,
hicn_payload_type_t payload_type);
-int hicn_data_reset_for_hash (hicn_format_t format, hicn_header_t * packet);
+int hicn_data_reset_for_hash (hicn_format_t format, hicn_header_t *packet);
#endif /* HICN_COMPAT_H */
diff --git a/lib/includes/hicn/ops.h b/lib/includes/hicn/ops.h
index e8feff92d..7d4ae86d8 100644
--- a/lib/includes/hicn/ops.h
+++ b/lib/includes/hicn/ops.h
@@ -253,7 +253,7 @@ typedef struct hicn_ops_s
* @param [in,out] h - Buffer holding the packet
* @param [in] partial_csum - Partial checksum (set to 0, used internally to
* carry intermediate values from IP pseudo-header)
- * @param [in] payload_length - Payload length (can be set to 0, retrieved
+ * @param [in] payload_length - Payload length (can be set to ~0, retrieved
* and used internally to carry payload length across protocol headers)
* @return hICN error code
*/
@@ -264,9 +264,8 @@ typedef struct hicn_ops_s
* @brief Validate all checksums in packet headers
* @param [in] type - hICN packet type
* @param [in] h - Buffer holding the packet
- * @param [in] partial_csum - Partial checksum (set to 0, used internally to
- * carry intermediate values from IP pseudo-header)
- * @param [in] payload_length - Payload length (can be set to 0, retrieved
+ * @param [in] partial_csum - Partial checksum, or zero if no partial checksum available
+ * @param [in] payload_length - Payload length (can be set to ~0, retrieved
* and used internally to carry payload length across protocol headers)
* @return hICN error code
*/
@@ -294,12 +293,15 @@ typedef struct hicn_ops_s
* @param [in] addr_old - Old locator (set to NULL, used internally to
* compute incremental checksums)
* @param [in] face_id - Face identifier used to update pathlabel
+ * @param [in] reset_pl - If not zero, reset the current pathlabel
+ * before update it
* @return hICN error code
*/
int (*rewrite_data) (hicn_type_t type, hicn_protocol_t * h,
const ip46_address_t * addr_new,
ip46_address_t * addr_old,
- const hicn_faceid_t face_id);
+ const hicn_faceid_t face_id,
+ u8 reset_pl);
/**
* @brief Return the packet length
@@ -610,7 +612,7 @@ PAYLOAD (hicn_type_t type, const hicn_protocol_t * h)
int protocol ## _rewrite_interest(hicn_type_t type, hicn_protocol_t * h, const ip46_address_t * addr_new, ip46_address_t * addr_old) { return HICN_LIB_ERROR_ ## error ; }
#define DECLARE_rewrite_data(protocol, error) \
- int protocol ## _rewrite_data(hicn_type_t type, hicn_protocol_t * h, const ip46_address_t * addr_new, ip46_address_t * addr_old, const hicn_faceid_t face_id) { return HICN_LIB_ERROR_ ## error ; }
+ int protocol ## _rewrite_data(hicn_type_t type, hicn_protocol_t * h, const ip46_address_t * addr_new, ip46_address_t * addr_old, const hicn_faceid_t face_id, u8 reset_pl) { return HICN_LIB_ERROR_ ## error ; }
#define DECLARE_get_length(protocol, error) \
int protocol ## _get_length(hicn_type_t type, const hicn_protocol_t * h, size_t * length) { 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/common.c b/lib/src/common.c
index 228a59d1e..562771e09 100644
--- a/lib/src/common.c
+++ b/lib/src/common.c
@@ -119,7 +119,7 @@ hicn_packet_dump (const uint8_t * buffer, size_t len)
// Output description if given.
if (len == 0)
{
- TRACE (" ZERO LENGTH\n");
+ printf (" ZERO LENGTH\n");
return;
}
@@ -132,14 +132,14 @@ hicn_packet_dump (const uint8_t * buffer, size_t len)
{
// Just don't print ASCII for the zeroth line.
if (i != 0)
- TRACE (" %s\n", buff);
+ printf (" %s\n", buff);
// Output the offset.
- TRACE (" %04x ", i);
+ printf (" %04x ", i);
}
// Now the hex code for the specific character.
- TRACE (" %02x", pc[i]);
+ printf (" %02x", pc[i]);
// And store a printable ASCII character for later.
if ((pc[i] < 0x20) || (pc[i] > 0x7e))
@@ -152,12 +152,12 @@ hicn_packet_dump (const uint8_t * buffer, size_t len)
// Pad out last line if not exactly 16 characters.
while ((i % 16) != 0)
{
- TRACE (" ");
+ printf (" ");
i++;
}
// And print the final ASCII bit.
- TRACE (" %s\n", buff);
+ printf (" %s\n", buff);
}
/*
diff --git a/lib/src/compat.c b/lib/src/compat.c
index 615175e3b..779a47315 100644
--- a/lib/src/compat.c
+++ b/lib/src/compat.c
@@ -20,8 +20,8 @@
#ifndef _WIN32
#include <netinet/in.h>
#endif
-#include <string.h> // memset
-#include <stddef.h> // offsetof
+#include <string.h> // memset
+#include <stddef.h> // offsetof
#include <hicn/common.h>
#include <hicn/compat.h>
@@ -30,13 +30,13 @@
#include <hicn/name.h>
#include <hicn/ops.h>
-#define member_size(type, member) sizeof(((type *)0)->member)
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a)))
+#define member_size(type, member) sizeof (((type *) 0)->member)
+#define ARRAY_SIZE(a) (sizeof (a) / sizeof (*(a)))
#define HICN_NAME_COMPONENT_SIZE 2
int
-hicn_packet_get_format (const hicn_header_t * h, hicn_format_t * format)
+hicn_packet_get_format (const hicn_header_t *h, hicn_format_t *format)
{
*format = HF_UNSPEC;
@@ -122,7 +122,7 @@ hicn_format_to_type (hicn_format_t format)
* This function is used to wrap old API calls to new ones
*/
hicn_type_t
-hicn_header_to_type (const hicn_header_t * h)
+hicn_header_to_type (const hicn_header_t *h)
{
hicn_format_t format;
hicn_packet_get_format (h, &format);
@@ -130,39 +130,47 @@ hicn_header_to_type (const hicn_header_t * h)
}
int
-hicn_packet_init_header (hicn_format_t format, hicn_header_t * packet)
+hicn_packet_init_header (hicn_format_t format, hicn_header_t *packet)
{
hicn_type_t type = hicn_format_to_type (format);
+
+ if (hicn_type_is_none (type))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
return hicn_ops_vft[type.l1]->init_packet_header (type, &packet->protocol);
}
int
-hicn_packet_compute_checksum (hicn_format_t format, hicn_header_t * h)
+hicn_packet_compute_checksum (hicn_format_t format, hicn_header_t *h)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->update_checksums (type, &h->protocol, 0, 0);
+ return hicn_ops_vft[type.l1]->update_checksums (type, &h->protocol, 0, ~0);
}
int
-hicn_packet_compute_header_checksum (hicn_format_t format, hicn_header_t * h,
+hicn_packet_compute_header_checksum (hicn_format_t format, hicn_header_t *h,
u16 init_sum)
{
hicn_type_t type = hicn_format_to_type (format);
- /* payload_length == ~0: ignore payload */
- return hicn_ops_vft[type.l1]->update_checksums (type, &h->protocol,
- init_sum, ~0);
+ /* payload_length == 0: ignore payload */
+ return hicn_ops_vft[type.l1]->update_checksums (type, &h->protocol, init_sum,
+ 0);
}
int
-hicn_packet_check_integrity (hicn_format_t format, hicn_header_t * h)
+hicn_packet_check_integrity_no_payload (hicn_format_t format, hicn_header_t *h,
+ u16 init_sum)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->verify_checksums (type, &h->protocol, 0, 0);
+ return hicn_ops_vft[type.l1]->verify_checksums (type, &h->protocol, init_sum,
+ 0);
}
int
hicn_packet_get_header_length_from_format (hicn_format_t format,
- size_t * header_length)
+ size_t *header_length)
{
*header_length = _is_ipv4 (format) * IPV4_HDRLEN;
*header_length += _is_ipv6 (format) * IPV6_HDRLEN;
@@ -174,8 +182,8 @@ hicn_packet_get_header_length_from_format (hicn_format_t format,
}
int
-hicn_packet_get_header_length (hicn_format_t format, const hicn_header_t * h,
- size_t * header_length)
+hicn_packet_get_header_length (hicn_format_t format, const hicn_header_t *h,
+ size_t *header_length)
{
hicn_packet_get_header_length_from_format (format, header_length);
int is_ah = _is_ah (format);
@@ -184,15 +192,15 @@ hicn_packet_get_header_length (hicn_format_t format, const hicn_header_t * h,
// The signature payload is expressed as number of 32 bits words
if (is_ah && is_ipv4)
*header_length += (h->v4ah.ah.payloadlen) << 2;
- else if(is_ah && is_ipv6)
+ else if (is_ah && is_ipv6)
*header_length += (h->v6ah.ah.payloadlen) << 2;
return HICN_LIB_ERROR_NONE;
}
int
-hicn_packet_get_payload_length (hicn_format_t format, const hicn_header_t * h,
- size_t * payload_length)
+hicn_packet_get_payload_length (hicn_format_t format, const hicn_header_t *h,
+ size_t *payload_length)
{
hicn_type_t type = hicn_format_to_type (format);
return hicn_ops_vft[type.l1]->get_payload_length (type, &h->protocol,
@@ -200,7 +208,7 @@ hicn_packet_get_payload_length (hicn_format_t format, const hicn_header_t * h,
}
int
-hicn_packet_set_payload_length (hicn_format_t format, hicn_header_t * h,
+hicn_packet_set_payload_length (hicn_format_t format, hicn_header_t *h,
const size_t payload_length)
{
hicn_type_t type = hicn_format_to_type (format);
@@ -209,8 +217,8 @@ hicn_packet_set_payload_length (hicn_format_t format, hicn_header_t * h,
}
int
-hicn_packet_compare (const hicn_header_t * packet1,
- const hicn_header_t * packet2)
+hicn_packet_compare (const hicn_header_t *packet1,
+ const hicn_header_t *packet2)
{
hicn_type_t type1 = hicn_header_to_type (packet1);
hicn_type_t type2 = hicn_header_to_type (packet2);
@@ -233,25 +241,23 @@ hicn_packet_compare (const hicn_header_t * packet1,
return HICN_LIB_ERROR_UNEXPECTED;
return memcmp ((u8 *) packet1, (u8 *) packet2, len1);
-
}
int
-hicn_packet_get_name (hicn_format_t format, const hicn_header_t * h,
- hicn_name_t * name, u8 is_interest)
+hicn_packet_get_name (hicn_format_t format, const hicn_header_t *h,
+ hicn_name_t *name, u8 is_interest)
{
hicn_type_t type = hicn_format_to_type (format);
if (is_interest)
- return hicn_ops_vft[type.l1]->get_interest_name (type, &h->protocol,
- name);
+ return hicn_ops_vft[type.l1]->get_interest_name (type, &h->protocol, name);
else
return hicn_ops_vft[type.l1]->get_data_name (type, &h->protocol, name);
}
int
-hicn_packet_set_name (hicn_format_t format, hicn_header_t * h,
- const hicn_name_t * name, u8 is_interest)
+hicn_packet_set_name (hicn_format_t format, hicn_header_t *h,
+ const hicn_name_t *name, u8 is_interest)
{
hicn_type_t type = hicn_format_to_type (format);
@@ -261,23 +267,21 @@ hicn_packet_set_name (hicn_format_t format, hicn_header_t * h,
#endif /* HICN_VPP_PLUGIN */
if (is_interest)
- return hicn_ops_vft[type.l1]->set_interest_name (type, &h->protocol,
- name);
+ return hicn_ops_vft[type.l1]->set_interest_name (type, &h->protocol, name);
else
return hicn_ops_vft[type.l1]->set_data_name (type, &h->protocol, name);
}
int
-hicn_packet_set_payload (hicn_format_t format, hicn_header_t * h,
- const u8 * payload, u16 payload_length)
+hicn_packet_set_payload (hicn_format_t format, hicn_header_t *h,
+ const u8 *payload, u16 payload_length)
{
hicn_type_t type = hicn_format_to_type (format);
size_t header_length;
int rc;
- rc =
- hicn_ops_vft[type.l1]->get_header_length (type, &h->protocol,
- &header_length);
+ rc = hicn_ops_vft[type.l1]->get_header_length (type, &h->protocol,
+ &header_length);
if (rc < 0)
return rc;
@@ -288,22 +292,20 @@ hicn_packet_set_payload (hicn_format_t format, hicn_header_t * h,
}
int
-hicn_packet_get_payload (hicn_format_t format, const hicn_header_t * h,
- u8 ** payload, size_t * payload_size, bool hard_copy)
+hicn_packet_get_payload (hicn_format_t format, const hicn_header_t *h,
+ u8 **payload, size_t *payload_size, bool hard_copy)
{
size_t header_length, payload_length;
int rc;
hicn_type_t type = hicn_format_to_type (format);
- rc =
- hicn_ops_vft[type.l1]->get_header_length (type, &h->protocol,
- &header_length);
+ rc = hicn_ops_vft[type.l1]->get_header_length (type, &h->protocol,
+ &header_length);
if (rc < 0)
return rc;
- rc =
- hicn_ops_vft[type.l1]->get_payload_length (type, &h->protocol,
- &payload_length);
+ rc = hicn_ops_vft[type.l1]->get_payload_length (type, &h->protocol,
+ &payload_length);
if (rc < 0)
return rc;
@@ -320,23 +322,21 @@ hicn_packet_get_payload (hicn_format_t format, const hicn_header_t * h,
}
int
-hicn_packet_get_locator (hicn_format_t format, const hicn_header_t * h,
- ip_address_t * address, bool is_interest)
+hicn_packet_get_locator (hicn_format_t format, const hicn_header_t *h,
+ ip_address_t *address, bool is_interest)
{
int is_ipv4 = (format & HFO_INET);
int is_ipv6 = (format & HFO_INET6) >> 1;
if (is_ipv4)
{
- address->v4.as_inaddr = is_interest
- ? h->v4.ip.saddr.as_inaddr
- : h->v4.ip.daddr.as_inaddr;
+ address->v4.as_inaddr =
+ is_interest ? h->v4.ip.saddr.as_inaddr : h->v4.ip.daddr.as_inaddr;
}
else if (is_ipv6)
{
- address->v6.as_in6addr = is_interest
- ? h->v6.ip.saddr.as_in6addr
- : h->v6.ip.daddr.as_in6addr;
+ address->v6.as_in6addr =
+ is_interest ? h->v6.ip.saddr.as_in6addr : h->v6.ip.daddr.as_in6addr;
}
else
{
@@ -347,25 +347,25 @@ hicn_packet_get_locator (hicn_format_t format, const hicn_header_t * h,
}
int
-hicn_packet_set_locator (hicn_format_t format, hicn_header_t * h,
- const ip_address_t * address, bool is_interest)
+hicn_packet_set_locator (hicn_format_t format, hicn_header_t *h,
+ const ip_address_t *address, bool is_interest)
{
int is_ipv4 = (format & HFO_INET);
int is_ipv6 = (format & HFO_INET6) >> 1;
if (is_ipv6)
{
- if (is_interest)
- h->v6.ip.saddr.as_in6addr = address->v6.as_in6addr;
- else
- h->v6.ip.daddr.as_in6addr = address->v6.as_in6addr;
+ if (is_interest)
+ h->v6.ip.saddr.as_in6addr = address->v6.as_in6addr;
+ else
+ h->v6.ip.daddr.as_in6addr = address->v6.as_in6addr;
}
else if (is_ipv4)
{
- if (is_interest)
- h->v4.ip.saddr.as_inaddr = address->v4.as_inaddr;
- else
- h->v4.ip.daddr.as_inaddr = address->v4.as_inaddr;
+ if (is_interest)
+ h->v4.ip.saddr.as_inaddr = address->v4.as_inaddr;
+ else
+ h->v4.ip.daddr.as_inaddr = address->v4.as_inaddr;
}
else
{
@@ -376,79 +376,78 @@ hicn_packet_set_locator (hicn_format_t format, hicn_header_t * h,
}
int
-hicn_packet_get_signature_size (hicn_format_t format, const hicn_header_t * h,
- size_t * bytes)
+hicn_packet_get_signature_size (hicn_format_t format, const hicn_header_t *h,
+ size_t *bytes)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->get_signature_size (type, &h->protocol,
- bytes);
+ return hicn_ops_vft[type.l1]->get_signature_size (type, &h->protocol, bytes);
}
int
-hicn_packet_set_signature_size (hicn_format_t format, hicn_header_t * h,
+hicn_packet_set_signature_size (hicn_format_t format, hicn_header_t *h,
size_t bytes)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->set_signature_size (type, &h->protocol,
- bytes);
+ return hicn_ops_vft[type.l1]->set_signature_size (type, &h->protocol, bytes);
}
int
-hicn_packet_set_signature_timestamp (hicn_format_t format, hicn_header_t * h,
- uint64_t signature_timestamp)
+hicn_packet_set_signature_timestamp (hicn_format_t format, hicn_header_t *h,
+ uint64_t signature_timestamp)
{
hicn_type_t type = hicn_format_to_type (format);
return hicn_ops_vft[type.l1]->set_signature_timestamp (type, &h->protocol,
- signature_timestamp);
+ signature_timestamp);
}
int
-hicn_packet_get_signature_timestamp (hicn_format_t format, const hicn_header_t * h,
- uint64_t *signature_timestamp)
+hicn_packet_get_signature_timestamp (hicn_format_t format,
+ const hicn_header_t *h,
+ uint64_t *signature_timestamp)
{
hicn_type_t type = hicn_format_to_type (format);
return hicn_ops_vft[type.l1]->get_signature_timestamp (type, &h->protocol,
- signature_timestamp);
+ signature_timestamp);
}
int
-hicn_packet_set_validation_algorithm (hicn_format_t format, hicn_header_t * h,
- uint8_t validation_algorithm)
+hicn_packet_set_validation_algorithm (hicn_format_t format, hicn_header_t *h,
+ uint8_t validation_algorithm)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->set_validation_algorithm (type, &h->protocol,
- validation_algorithm);
+ return hicn_ops_vft[type.l1]->set_validation_algorithm (
+ type, &h->protocol, validation_algorithm);
}
int
-hicn_packet_get_validation_algorithm (hicn_format_t format, const hicn_header_t * h,
- uint8_t * validation_algorithm)
+hicn_packet_get_validation_algorithm (hicn_format_t format,
+ const hicn_header_t *h,
+ uint8_t *validation_algorithm)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->get_validation_algorithm (type, &h->protocol,
- validation_algorithm);
+ return hicn_ops_vft[type.l1]->get_validation_algorithm (
+ type, &h->protocol, validation_algorithm);
}
int
-hicn_packet_set_key_id (hicn_format_t format, hicn_header_t * h,
- uint8_t *key_id)
+hicn_packet_set_key_id (hicn_format_t format, hicn_header_t *h,
+ uint8_t *key_id)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->set_key_id (type, &h->protocol,
- key_id);
+ return hicn_ops_vft[type.l1]->set_key_id (type, &h->protocol, key_id);
}
int
-hicn_packet_get_key_id (hicn_format_t format, hicn_header_t * h,
- uint8_t ** key_id, uint8_t *key_id_length)
+hicn_packet_get_key_id (hicn_format_t format, hicn_header_t *h,
+ uint8_t **key_id, uint8_t *key_id_length)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->get_key_id (type, &h->protocol,
- key_id, key_id_length);
+ return hicn_ops_vft[type.l1]->get_key_id (type, &h->protocol, key_id,
+ key_id_length);
}
int
-hicn_packet_get_hoplimit (const hicn_header_t * h, u8 * hops)
+hicn_packet_get_hoplimit (const hicn_header_t *h, u8 *hops)
{
switch (HICN_IP_VERSION (h))
{
@@ -466,7 +465,7 @@ hicn_packet_get_hoplimit (const hicn_header_t * h, u8 * hops)
}
int
-hicn_packet_set_hoplimit (hicn_header_t * h, u8 hops)
+hicn_packet_set_hoplimit (hicn_header_t *h, u8 hops)
{
switch (HICN_IP_VERSION (h))
{
@@ -483,9 +482,8 @@ hicn_packet_set_hoplimit (hicn_header_t * h, u8 hops)
return HICN_LIB_ERROR_NONE;
}
-
int
-hicn_packet_get_lifetime (const hicn_header_t * h, u32 * lifetime)
+hicn_packet_get_lifetime (const hicn_header_t *h, u32 *lifetime)
{
hicn_type_t type = hicn_header_to_type (h);
return hicn_ops_vft[type.l1]->get_lifetime (type, &h->protocol,
@@ -493,7 +491,7 @@ hicn_packet_get_lifetime (const hicn_header_t * h, u32 * lifetime)
}
int
-hicn_packet_set_lifetime (hicn_header_t * h, u32 lifetime)
+hicn_packet_set_lifetime (hicn_header_t *h, u32 lifetime)
{
hicn_type_t type = hicn_header_to_type (h);
return hicn_ops_vft[type.l1]->set_lifetime (type, &h->protocol,
@@ -501,15 +499,15 @@ hicn_packet_set_lifetime (hicn_header_t * h, u32 lifetime)
}
int
-hicn_packet_get_reserved_bits (const hicn_header_t * h, u8 * reserved_bits)
+hicn_packet_get_reserved_bits (const hicn_header_t *h, u8 *reserved_bits)
{
switch (HICN_IP_VERSION (h))
{
case 6:
- *reserved_bits = (u8)(h->v6.tcp.reserved);
+ *reserved_bits = (u8) (h->v6.tcp.reserved);
break;
case 4:
- *reserved_bits = (u8)(h->v4.tcp.reserved);
+ *reserved_bits = (u8) (h->v4.tcp.reserved);
break;
default:
return HICN_LIB_ERROR_UNEXPECTED;
@@ -519,7 +517,7 @@ hicn_packet_get_reserved_bits (const hicn_header_t * h, u8 * reserved_bits)
}
int
-hicn_packet_set_reserved_bits (hicn_header_t * h, const u8 reserved_bits)
+hicn_packet_set_reserved_bits (hicn_header_t *h, const u8 reserved_bits)
{
switch (HICN_IP_VERSION (h))
{
@@ -537,16 +535,18 @@ hicn_packet_set_reserved_bits (hicn_header_t * h, const u8 reserved_bits)
}
int
-hicn_packet_get_payload_type (const hicn_header_t * h,
- hicn_payload_type_t * payload_type)
+hicn_packet_get_payload_type (const hicn_header_t *h,
+ hicn_payload_type_t *payload_type)
{
switch (HICN_IP_VERSION (h))
{
case 6:
- *payload_type = ((h->v6.tcp.flags & HICN_TCP_FLAG_URG) == HICN_TCP_FLAG_URG);
+ *payload_type =
+ ((h->v6.tcp.flags & HICN_TCP_FLAG_URG) == HICN_TCP_FLAG_URG);
break;
case 4:
- *payload_type = ((h->v4.tcp.flags & HICN_TCP_FLAG_URG) == HICN_TCP_FLAG_URG);
+ *payload_type =
+ ((h->v4.tcp.flags & HICN_TCP_FLAG_URG) == HICN_TCP_FLAG_URG);
break;
default:
return HICN_LIB_ERROR_UNEXPECTED;
@@ -561,7 +561,7 @@ hicn_packet_get_payload_type (const hicn_header_t * h,
}
int
-hicn_packet_set_payload_type (hicn_header_t * h,
+hicn_packet_set_payload_type (hicn_header_t *h,
hicn_payload_type_t payload_type)
{
if (payload_type != HPT_DATA && payload_type != HPT_MANIFEST)
@@ -591,8 +591,13 @@ hicn_packet_set_payload_type (hicn_header_t * h,
}
int
-hicn_packet_set_syn (hicn_header_t * h)
+hicn_packet_set_syn (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -608,8 +613,13 @@ hicn_packet_set_syn (hicn_header_t * h)
}
int
-hicn_packet_reset_syn (hicn_header_t * h)
+hicn_packet_reset_syn (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -625,8 +635,13 @@ hicn_packet_reset_syn (hicn_header_t * h)
}
int
-hicn_packet_test_syn (const hicn_header_t * h, bool * flag)
+hicn_packet_test_syn (hicn_format_t format, const hicn_header_t *h, bool *flag)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -642,8 +657,13 @@ hicn_packet_test_syn (const hicn_header_t * h, bool * flag)
}
int
-hicn_packet_set_ack (hicn_header_t * h)
+hicn_packet_set_ack (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -659,8 +679,13 @@ hicn_packet_set_ack (hicn_header_t * h)
}
int
-hicn_packet_reset_ack (hicn_header_t * h)
+hicn_packet_reset_ack (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -676,8 +701,13 @@ hicn_packet_reset_ack (hicn_header_t * h)
}
int
-hicn_packet_test_ack (const hicn_header_t * h, bool * flag)
+hicn_packet_test_ack (hicn_format_t format, const hicn_header_t *h, bool *flag)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -693,8 +723,13 @@ hicn_packet_test_ack (const hicn_header_t * h, bool * flag)
}
int
-hicn_packet_set_rst (hicn_header_t * h)
+hicn_packet_set_rst (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -710,8 +745,13 @@ hicn_packet_set_rst (hicn_header_t * h)
}
int
-hicn_packet_reset_rst (hicn_header_t * h)
+hicn_packet_reset_rst (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -727,8 +767,13 @@ hicn_packet_reset_rst (hicn_header_t * h)
}
int
-hicn_packet_test_rst (const hicn_header_t * h, bool * flag)
+hicn_packet_test_rst (hicn_format_t format, const hicn_header_t *h, bool *flag)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -744,8 +789,13 @@ hicn_packet_test_rst (const hicn_header_t * h, bool * flag)
}
int
-hicn_packet_set_fin (hicn_header_t * h)
+hicn_packet_set_fin (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -761,8 +811,13 @@ hicn_packet_set_fin (hicn_header_t * h)
}
int
-hicn_packet_reset_fin (hicn_header_t * h)
+hicn_packet_reset_fin (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -778,8 +833,13 @@ hicn_packet_reset_fin (hicn_header_t * h)
}
int
-hicn_packet_test_fin (const hicn_header_t * h, bool * flag)
+hicn_packet_test_fin (hicn_format_t format, const hicn_header_t *h, bool *flag)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -795,8 +855,13 @@ hicn_packet_test_fin (const hicn_header_t * h, bool * flag)
}
int
-hicn_packet_set_ece (hicn_header_t * h)
+hicn_packet_set_ece (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -812,8 +877,13 @@ hicn_packet_set_ece (hicn_header_t * h)
}
int
-hicn_packet_reset_ece (hicn_header_t * h)
+hicn_packet_reset_ece (hicn_format_t format, hicn_header_t *h)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -829,8 +899,13 @@ hicn_packet_reset_ece (hicn_header_t * h)
}
int
-hicn_packet_test_ece (const hicn_header_t * h, bool * flag)
+hicn_packet_test_ece (hicn_format_t format, const hicn_header_t *h, bool *flag)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -846,8 +921,13 @@ hicn_packet_test_ece (const hicn_header_t * h, bool * flag)
}
int
-hicn_packet_set_src_port (hicn_header_t * h, u16 src_port)
+hicn_packet_set_src_port (hicn_format_t format, hicn_header_t *h, u16 src_port)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -863,8 +943,14 @@ hicn_packet_set_src_port (hicn_header_t * h, u16 src_port)
}
int
-hicn_packet_get_src_port (const hicn_header_t * h, u16 * src_port)
+hicn_packet_get_src_port (hicn_format_t format, const hicn_header_t *h,
+ u16 *src_port)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -880,8 +966,13 @@ hicn_packet_get_src_port (const hicn_header_t * h, u16 * src_port)
}
int
-hicn_packet_set_dst_port (hicn_header_t * h, u16 dst_port)
+hicn_packet_set_dst_port (hicn_format_t format, hicn_header_t *h, u16 dst_port)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -897,8 +988,14 @@ hicn_packet_set_dst_port (hicn_header_t * h, u16 dst_port)
}
int
-hicn_packet_get_dst_port (const hicn_header_t * h, u16 * dst_port)
+hicn_packet_get_dst_port (hicn_format_t format, const hicn_header_t *h,
+ u16 *dst_port)
{
+ if (!_is_tcp (format))
+ {
+ return HICN_LIB_ERROR_UNEXPECTED;
+ }
+
switch (HICN_IP_VERSION (h))
{
case 6:
@@ -914,8 +1011,8 @@ hicn_packet_get_dst_port (const hicn_header_t * h, u16 * dst_port)
}
int
-hicn_packet_copy_header (hicn_format_t format, const hicn_header_t * packet,
- hicn_header_t * destination, bool copy_ah)
+hicn_packet_copy_header (hicn_format_t format, const hicn_header_t *packet,
+ hicn_header_t *destination, bool copy_ah)
{
size_t header_length = _is_ipv4 (format) * IPV4_HDRLEN;
header_length += _is_ipv6 (format) * IPV6_HDRLEN;
@@ -929,95 +1026,95 @@ hicn_packet_copy_header (hicn_format_t format, const hicn_header_t * packet,
}
#define _INTEREST 1
-#define _DATA 0
+#define _DATA 0
/* Interest */
int
-hicn_interest_get_name (hicn_format_t format, const hicn_header_t * interest,
- hicn_name_t * name)
+hicn_interest_get_name (hicn_format_t format, const hicn_header_t *interest,
+ hicn_name_t *name)
{
return hicn_packet_get_name (format, interest, name, _INTEREST);
}
int
-hicn_interest_set_name (hicn_format_t format, hicn_header_t * interest,
- const hicn_name_t * name)
+hicn_interest_set_name (hicn_format_t format, hicn_header_t *interest,
+ const hicn_name_t *name)
{
- int ret_err = hicn_packet_reset_ece (interest); //interest packet -> ece flag unset
+ int ret_err =
+ hicn_packet_reset_ece (format, interest); // interest packet -> ece flag unset
if (ret_err < 0)
return HICN_LIB_ERROR_UNEXPECTED;
return hicn_packet_set_name (format, interest, name, _INTEREST);
}
int
-hicn_interest_get_locator (hicn_format_t format,
- const hicn_header_t * interest,
- ip_address_t * address)
+hicn_interest_get_locator (hicn_format_t format, const hicn_header_t *interest,
+ ip_address_t *address)
{
return hicn_packet_get_locator (format, interest, address, _INTEREST);
}
int
-hicn_interest_set_locator (hicn_format_t format, hicn_header_t * interest,
- const ip_address_t * address)
+hicn_interest_set_locator (hicn_format_t format, hicn_header_t *interest,
+ const ip_address_t *address)
{
return hicn_packet_set_locator (format, interest, address, _INTEREST);
}
int
-hicn_interest_compare (const hicn_header_t * interest_1,
- const hicn_header_t * interest_2)
+hicn_interest_compare (const hicn_header_t *interest_1,
+ const hicn_header_t *interest_2)
{
return hicn_packet_compare (interest_1, interest_2);
}
int
-hicn_interest_get_lifetime (const hicn_header_t * interest, u32 * lifetime)
+hicn_interest_get_lifetime (const hicn_header_t *interest, u32 *lifetime)
{
return hicn_packet_get_lifetime (interest, lifetime);
}
int
-hicn_interest_set_lifetime (hicn_header_t * interest, u32 lifetime)
+hicn_interest_set_lifetime (hicn_header_t *interest, u32 lifetime)
{
return hicn_packet_set_lifetime (interest, lifetime);
}
int
hicn_interest_get_header_length (hicn_format_t format,
- const hicn_header_t * interest,
- size_t * header_length)
+ const hicn_header_t *interest,
+ size_t *header_length)
{
return hicn_packet_get_header_length (format, interest, header_length);
}
int
hicn_interest_get_payload_length (hicn_format_t format,
- const hicn_header_t * interest,
- size_t * payload_length)
+ const hicn_header_t *interest,
+ size_t *payload_length)
{
return hicn_packet_get_payload_length (format, interest, payload_length);
}
int
-hicn_interest_get_payload (hicn_format_t format,
- const hicn_header_t * interest, u8 ** payload,
- size_t * payload_size, bool hard_copy)
+hicn_interest_get_payload (hicn_format_t format, const hicn_header_t *interest,
+ u8 **payload, size_t *payload_size, bool hard_copy)
{
return hicn_packet_get_payload (format, interest, payload, payload_size,
hard_copy);
}
int
-hicn_interest_set_payload (hicn_format_t format, hicn_header_t * interest,
- const u8 * payload, size_t payload_length)
+hicn_interest_set_payload (hicn_format_t format, hicn_header_t *interest,
+ const u8 *payload, size_t payload_length)
{
- return hicn_packet_set_payload (format, interest, payload, (u16)payload_length);
+ return hicn_packet_set_payload (format, interest, payload,
+ (u16) payload_length);
}
int
-hicn_interest_reset_for_hash (hicn_format_t format, hicn_header_t * packet)
+hicn_interest_reset_for_hash (hicn_format_t format, hicn_header_t *packet)
{
hicn_type_t type = hicn_format_to_type (format);
return hicn_ops_vft[type.l1]->reset_interest_for_hash (type,
@@ -1027,85 +1124,84 @@ hicn_interest_reset_for_hash (hicn_format_t format, hicn_header_t * packet)
/* Data */
int
-hicn_data_get_name (hicn_format_t format, const hicn_header_t * data,
- hicn_name_t * name)
+hicn_data_get_name (hicn_format_t format, const hicn_header_t *data,
+ hicn_name_t *name)
{
return hicn_packet_get_name (format, data, name, _DATA);
}
int
-hicn_data_set_name (hicn_format_t format, hicn_header_t * data,
- const hicn_name_t * name)
+hicn_data_set_name (hicn_format_t format, hicn_header_t *data,
+ const hicn_name_t *name)
{
- int ret_err = hicn_packet_set_ece (data); //data packet -> ece flag set
+ int ret_err = hicn_packet_set_ece (format, data); // data packet -> ece flag set
if (ret_err < 0)
return HICN_LIB_ERROR_UNEXPECTED;
return hicn_packet_set_name (format, data, name, _DATA);
}
int
-hicn_data_get_locator (hicn_format_t format, const hicn_header_t * data,
- ip_address_t * address)
+hicn_data_get_locator (hicn_format_t format, const hicn_header_t *data,
+ ip_address_t *address)
{
return hicn_packet_get_locator (format, data, address, _DATA);
}
int
-hicn_data_set_locator (hicn_format_t format, hicn_header_t * data,
- const ip_address_t * address)
+hicn_data_set_locator (hicn_format_t format, hicn_header_t *data,
+ const ip_address_t *address)
{
return hicn_packet_set_locator (format, data, address, _DATA);
}
int
-hicn_data_compare (const hicn_header_t * data_1, const hicn_header_t * data_2)
+hicn_data_compare (const hicn_header_t *data_1, const hicn_header_t *data_2)
{
return hicn_packet_compare (data_1, data_2);
}
int
-hicn_data_get_expiry_time (const hicn_header_t * data, u32 * expiry_time)
+hicn_data_get_expiry_time (const hicn_header_t *data, u32 *expiry_time)
{
return hicn_packet_get_lifetime (data, expiry_time);
}
int
-hicn_data_set_expiry_time (hicn_header_t * data, u32 expiry_time)
+hicn_data_set_expiry_time (hicn_header_t *data, u32 expiry_time)
{
return hicn_packet_set_lifetime (data, (hicn_lifetime_t) expiry_time);
}
int
-hicn_data_get_header_length (hicn_format_t format, hicn_header_t * data,
- size_t * header_length)
+hicn_data_get_header_length (hicn_format_t format, hicn_header_t *data,
+ size_t *header_length)
{
return hicn_packet_get_header_length (format, data, header_length);
}
int
-hicn_data_get_payload_length (hicn_format_t format,
- const hicn_header_t * data,
- size_t * payload_length)
+hicn_data_get_payload_length (hicn_format_t format, const hicn_header_t *data,
+ size_t *payload_length)
{
return hicn_packet_get_payload_length (format, data, payload_length);
}
int
-hicn_data_set_payload_type (hicn_header_t * data,
+hicn_data_set_payload_type (hicn_header_t *data,
hicn_payload_type_t payload_type)
{
return hicn_packet_set_payload_type (data, payload_type);
}
int
-hicn_data_get_payload_type (const hicn_header_t * data,
- hicn_payload_type_t * payload_type)
+hicn_data_get_payload_type (const hicn_header_t *data,
+ hicn_payload_type_t *payload_type)
{
return hicn_packet_get_payload_type (data, payload_type);
}
int
-hicn_data_get_path_label (const hicn_header_t * data, u32 * path_label)
+hicn_data_get_path_label (const hicn_header_t *data, u32 *path_label)
{
hicn_type_t type = hicn_header_to_type (data);
return hicn_ops_vft[type.l1]->get_data_pathlabel (type, &data->protocol,
@@ -1113,7 +1209,7 @@ hicn_data_get_path_label (const hicn_header_t * data, u32 * path_label)
}
int
-hicn_data_set_path_label (hicn_header_t * data, u32 path_label)
+hicn_data_set_path_label (hicn_header_t *data, u32 path_label)
{
hicn_type_t type = hicn_header_to_type (data);
return hicn_ops_vft[type.l1]->set_data_pathlabel (type, &data->protocol,
@@ -1121,34 +1217,34 @@ hicn_data_set_path_label (hicn_header_t * data, u32 path_label)
}
int
-hicn_data_set_payload (hicn_format_t format, hicn_header_t * data,
- const u8 * payload, size_t payload_length)
+hicn_data_set_payload (hicn_format_t format, hicn_header_t *data,
+ const u8 *payload, size_t payload_length)
{
- return hicn_packet_set_payload (format, data, payload, (u16)payload_length);
+ return hicn_packet_set_payload (format, data, payload, (u16) payload_length);
}
int
-hicn_data_get_payload (hicn_format_t format, const hicn_header_t * data,
- u8 ** payload, size_t * payload_size, bool hard_copy)
+hicn_data_get_payload (hicn_format_t format, const hicn_header_t *data,
+ u8 **payload, size_t *payload_size, bool hard_copy)
{
return hicn_packet_get_payload (format, data, payload, payload_size,
hard_copy);
}
int
-hicn_data_reset_for_hash (hicn_format_t format, hicn_header_t * packet)
+hicn_data_reset_for_hash (hicn_format_t format, hicn_header_t *packet)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->reset_data_for_hash (type,
- &packet->protocol);
-
+ return hicn_ops_vft[type.l1]->reset_data_for_hash (type, &packet->protocol);
}
-int hicn_packet_get_signature(hicn_format_t format, hicn_header_t * packet, uint8_t ** sign_buf)
+int
+hicn_packet_get_signature (hicn_format_t format, hicn_header_t *packet,
+ uint8_t **sign_buf)
{
hicn_type_t type = hicn_format_to_type (format);
- return hicn_ops_vft[type.l1]->get_signature (type,
- &packet->protocol, sign_buf);
+ return hicn_ops_vft[type.l1]->get_signature (type, &packet->protocol,
+ sign_buf);
}
/*
diff --git a/lib/src/name.c b/lib/src/name.c
index 9388c35e7..54b2a76aa 100644
--- a/lib/src/name.c
+++ b/lib/src/name.c
@@ -242,7 +242,7 @@ hicn_name_hash (const hicn_name_t * name, u32 * hash, bool consider_suffix)
int
hicn_name_empty (hicn_name_t * name)
{
- return name->type == HNT_UNSPEC ? HICN_LIB_ERROR_NONE : 1;
+ return name->type == HNT_UNSPEC ? 1 : 0;
}
int
diff --git a/lib/src/protocol/ah.c b/lib/src/protocol/ah.c
index da08d1ee8..03f3af04a 100644
--- a/lib/src/protocol/ah.c
+++ b/lib/src/protocol/ah.c
@@ -113,7 +113,7 @@ ah_rewrite_interest (hicn_type_t type, hicn_protocol_t * h,
int
ah_rewrite_data (hicn_type_t type, hicn_protocol_t * h,
const ip46_address_t * addr_new, ip46_address_t * addr_old,
- const hicn_faceid_t face_id)
+ const hicn_faceid_t face_id, u8 reset_pl)
{
/* Nothing to do on signature */
return HICN_LIB_ERROR_NONE;
diff --git a/lib/src/protocol/icmp.c b/lib/src/protocol/icmp.c
index b24c0f11e..a16353427 100644
--- a/lib/src/protocol/icmp.c
+++ b/lib/src/protocol/icmp.c
@@ -118,7 +118,7 @@ icmp_rewrite_interest (hicn_type_t type, hicn_protocol_t * h,
int
icmp_rewrite_data (hicn_type_t type, hicn_protocol_t * h,
const ip46_address_t * addr_new, ip46_address_t * addr_old,
- const hicn_faceid_t face_id)
+ const hicn_faceid_t face_id, u8 reset_pl)
{
return HICN_LIB_ERROR_NOT_IMPLEMENTED;
// u16 *icmp_checksum = &(h->icmp.csum);
diff --git a/lib/src/protocol/ipv4.c b/lib/src/protocol/ipv4.c
index 781907231..73ce12ee0 100644
--- a/lib/src/protocol/ipv4.c
+++ b/lib/src/protocol/ipv4.c
@@ -324,7 +324,7 @@ ipv4_rewrite_interest (hicn_type_t type, hicn_protocol_t * h,
int
ipv4_rewrite_data (hicn_type_t type, hicn_protocol_t * h,
const ip46_address_t * addr_new, ip46_address_t * addr_old,
- const hicn_faceid_t face_id)
+ const hicn_faceid_t face_id, u8 reset_pl)
{
// ASSERT(addr_old == NULL);
addr_old->ip4 = h->ipv4.daddr;
@@ -336,7 +336,7 @@ ipv4_rewrite_data (hicn_type_t type, hicn_protocol_t * h,
h->ipv4.csum = 0;
h->ipv4.csum = csum (&h->ipv4, IPV4_HDRLEN, 0);
- return CHILD_OPS (rewrite_data, type, h, addr_new, addr_old, face_id);
+ return CHILD_OPS (rewrite_data, type, h, addr_new, addr_old, face_id, reset_pl);
}
int
diff --git a/lib/src/protocol/ipv6.c b/lib/src/protocol/ipv6.c
index f23b01cd8..bf8123497 100644
--- a/lib/src/protocol/ipv6.c
+++ b/lib/src/protocol/ipv6.c
@@ -220,19 +220,13 @@ ipv6_update_checksums (hicn_type_t type, hicn_protocol_t * h,
u16 partial_csum, size_t payload_length)
{
/* Retrieve payload length if not specified */
- if (payload_length == 0)
+ if (payload_length == ~0)
{
int rc = ipv6_get_payload_length (type, h, &payload_length);
if (rc < 0)
return rc;
}
- /* Ignore the payload if payload_length = ~0 */
- if (payload_length == ~0)
- {
- payload_length = 0;
- }
-
/* Build pseudo-header */
ipv6_pseudo_header_t psh;
psh.ip_src = h->ipv6.saddr;
@@ -258,7 +252,7 @@ ipv6_verify_checksums (hicn_type_t type, hicn_protocol_t * h,
u16 partial_csum, size_t payload_length)
{
/* Retrieve payload length if not specified */
- if (payload_length == 0)
+ if (payload_length == ~0)
{
int rc = ipv6_get_payload_length (type, h, &payload_length);
if (rc < 0)
@@ -276,7 +270,11 @@ ipv6_verify_checksums (hicn_type_t type, hicn_protocol_t * h,
pseudo.protocol = h->ipv6.nxt;
/* Compute partial checksum based on pseudo-header */
- partial_csum = csum (&pseudo, IPV6_PSHDRLEN, 0);
+ if (partial_csum != 0)
+ {
+ partial_csum = ~partial_csum;
+ }
+ partial_csum = csum (&pseudo, IPV6_PSHDRLEN, partial_csum);
return CHILD_OPS (verify_checksums, type, h, partial_csum, payload_length);
}
@@ -296,13 +294,13 @@ ipv6_rewrite_interest (hicn_type_t type, hicn_protocol_t * h,
int
ipv6_rewrite_data (hicn_type_t type, hicn_protocol_t * h,
const ip46_address_t * addr_new, ip46_address_t * addr_old,
- const hicn_faceid_t face_id)
+ const hicn_faceid_t face_id, u8 reset_pl)
{
// ASSERT(addr_old == NULL);
addr_old->ip6 = h->ipv6.daddr;
h->ipv6.daddr = addr_new->ip6;
- return CHILD_OPS (rewrite_data, type, h, addr_new, addr_old, face_id);
+ return CHILD_OPS (rewrite_data, type, h, addr_new, addr_old, face_id, reset_pl);
}
int
diff --git a/lib/src/protocol/tcp.c b/lib/src/protocol/tcp.c
index c6099bf8f..95f93c6af 100644
--- a/lib/src/protocol/tcp.c
+++ b/lib/src/protocol/tcp.c
@@ -170,12 +170,12 @@ tcp_update_data_pathlabel (hicn_type_t type, hicn_protocol_t * h,
const hicn_faceid_t face_id)
{
hicn_pathlabel_t pl =
- (hicn_pathlabel_t) ((h->tcp.pathlabel & HICN_PATH_LABEL_MASK) >> (32 -
- HICN_PATH_LABEL_SIZE));
+ (hicn_pathlabel_t) (h->tcp.seq_ack >> (32 - HICN_PATH_LABEL_SIZE));
+
hicn_pathlabel_t new_pl;
update_pathlabel (pl, face_id, &new_pl);
- h->tcp.pathlabel = new_pl;
+ h->tcp.seq_ack = (new_pl << (32 - HICN_PATH_LABEL_SIZE));
return HICN_LIB_ERROR_NONE;
}
@@ -249,7 +249,12 @@ int
tcp_verify_checksums (hicn_type_t type, hicn_protocol_t * h, u16 partial_csum,
size_t payload_length)
{
- if (csum (h, TCP_HDRLEN + payload_length, ~partial_csum) != 0)
+ if (PREDICT_TRUE (partial_csum != 0))
+ {
+ partial_csum = ~partial_csum;
+ }
+
+ if (csum (h, TCP_HDRLEN + payload_length, partial_csum) != 0)
return HICN_LIB_ERROR_CORRUPTED_PACKET;
return CHILD_OPS (verify_checksums, type, h, 0, payload_length);
}
@@ -307,11 +312,19 @@ tcp_rewrite_interest (hicn_type_t type, hicn_protocol_t * h,
int
tcp_rewrite_data (hicn_type_t type, hicn_protocol_t * h,
const ip46_address_t * addr_new, ip46_address_t * addr_old,
- const hicn_faceid_t face_id)
+ const hicn_faceid_t face_id, u8 reset_pl)
{
+
u16 *tcp_checksum = &(h->tcp.csum);
int ret = check_tcp_checksum(*tcp_checksum);
+ /*
+ * update path label
+ */
+ u16 old_pl = h->tcp.seq_ack;
+ if(reset_pl) h->tcp.seq_ack = 0;
+ tcp_update_data_pathlabel (type, h, face_id);
+
if (ret)
{
return ret;
@@ -330,9 +343,8 @@ tcp_rewrite_data (hicn_type_t type, hicn_protocol_t * h,
csum = ip_csum_add_even (csum, (ip_csum_t) (addr_new->ip6.as_u64[0]));
csum = ip_csum_add_even (csum, (ip_csum_t) (addr_new->ip6.as_u64[1]));
- csum = ip_csum_sub_even (csum, h->tcp.pathlabel);
- tcp_update_data_pathlabel (type, h, face_id);
- csum = ip_csum_add_even (csum, h->tcp.pathlabel);
+ csum = ip_csum_sub_even (csum, old_pl);
+ csum = ip_csum_add_even (csum, h->tcp.seq_ack);
*tcp_checksum = ip_csum_fold (csum);