diff options
author | Mauro Sardara <msardara@cisco.com> | 2022-07-08 16:10:13 +0000 |
---|---|---|
committer | Mauro Sardara <msardara@cisco.com> | 2022-08-10 11:57:10 +0200 |
commit | 8f0a8bf572b9b8123121338a31462440bad65857 (patch) | |
tree | ecac67f0ad005b2eb0a1bd25c8f242497ffddea1 /lib/includes/hicn/common.h | |
parent | 8d27045832427a0ea345f48bfb2c42f46a357af1 (diff) |
feat: add interest manifest serialization/deserialization
Also:
add helpers for interest manifest
Ref: HICN-738
Signed-off-by: Mauro Sardara <msardara@cisco.com>
Change-Id: Ia531605148e00ccbe446da0f4f2d8caae2b098be
Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'lib/includes/hicn/common.h')
-rw-r--r-- | lib/includes/hicn/common.h | 58 |
1 files changed, 39 insertions, 19 deletions
diff --git a/lib/includes/hicn/common.h b/lib/includes/hicn/common.h index a84124617..64aca8f1f 100644 --- a/lib/includes/hicn/common.h +++ b/lib/includes/hicn/common.h @@ -235,34 +235,54 @@ typedef struct } ip_version_t; #define HICN_IP_VERSION(packet) ((ip_version_t *) packet)->version -#ifndef ntohll -static inline uint64_t -ntohll (uint64_t input) -{ - uint64_t return_val = input; +/* + * Endianess utils + */ + #if (__BYTE_ORDER__) == (__ORDER_LITTLE_ENDIAN__) - uint8_t *tmp = (uint8_t *) &return_val; - - tmp[0] = (uint8_t) (input >> 56); - tmp[1] = (uint8_t) (input >> 48); - tmp[2] = (uint8_t) (input >> 40); - tmp[3] = (uint8_t) (input >> 32); - tmp[4] = (uint8_t) (input >> 24); - tmp[5] = (uint8_t) (input >> 16); - tmp[6] = (uint8_t) (input >> 8); - tmp[7] = (uint8_t) (input >> 0); +#define HICN_LITTLE_ENDIAN_ARCH +#else +#define HICN_BIG_ENDIAN_ARCH +#endif + +static inline u16 +hicn_conditional_swap_u16 (u16 value) +{ +#ifdef HICN_LITTLE_ENDIAN_ARCH + value = __builtin_bswap16 (value); #endif - return return_val; + return value; } -static inline uint64_t -htonll (uint64_t input) +static inline u32 +hicn_conditional_swap_u32 (u32 value) { - return (ntohll (input)); +#ifdef HICN_LITTLE_ENDIAN_ARCH + value = __builtin_bswap32 (value); +#endif + + return value; } + +static inline u64 +hicn_conditional_swap_u64 (u64 value) +{ +#ifdef HICN_LITTLE_ENDIAN_ARCH + value = __builtin_bswap64 (value); #endif + return value; +} + +#define hicn_net_to_host_16(x) hicn_conditional_swap_u16 ((u16) (x)) +#define hicn_net_to_host_32(x) hicn_conditional_swap_u32 ((u32) (x)) +#define hicn_net_to_host_64(x) hicn_conditional_swap_u64 ((u64) (x)) + +#define hicn_host_to_net_16(x) hicn_conditional_swap_u16 ((u16) (x)) +#define hicn_host_to_net_32(x) hicn_conditional_swap_u32 ((u32) (x)) +#define hicn_host_to_net_64(x) hicn_conditional_swap_u64 ((u64) (x)) + #define hicn_round_pow2(x, pow2) (((x) + (pow2) -1) & ~((pow2) -1)) #define _SIZEOF_ALIGNED(x, size) hicn_round_pow2 (sizeof (x), size) |