diff options
Diffstat (limited to 'lib/includes/hicn/interest_manifest.h')
-rw-r--r-- | lib/includes/hicn/interest_manifest.h | 60 |
1 files changed, 43 insertions, 17 deletions
diff --git a/lib/includes/hicn/interest_manifest.h b/lib/includes/hicn/interest_manifest.h index 2b4cd57a2..b6122ce1c 100644 --- a/lib/includes/hicn/interest_manifest.h +++ b/lib/includes/hicn/interest_manifest.h @@ -44,7 +44,7 @@ typedef struct /* This can be 16 bits, but we use 32 bits for alignment */ uint32_t n_suffixes; - /* Align to 64 bits */ + /* First suffix */ uint32_t padding; hicn_uword request_bitmap[BITMAP_SIZE]; @@ -102,7 +102,27 @@ interest_manifest_serialize (interest_manifest_header_t *int_manifest_header) static inline void interest_manifest_deserialize (interest_manifest_header_t *int_manifest_header) { - _interest_manifest_deserialize (int_manifest_header, hicn_uword_bits); + u32 n_suffixes = 0; + + int_manifest_header->n_suffixes = + hicn_net_to_host_32 (int_manifest_header->n_suffixes); + int_manifest_header->padding = + hicn_net_to_host_32 (int_manifest_header->padding); + + for (unsigned i = 0; i < BITMAP_SIZE; i++) + { + int_manifest_header->request_bitmap[i] = + hicn_net_to_host_64 (int_manifest_header->request_bitmap[i]); + } + + hicn_name_suffix_t *suffix = + (hicn_name_suffix_t *) (int_manifest_header + 1); + + n_suffixes = int_manifest_header->n_suffixes; + for (unsigned i = 0; i < n_suffixes; i++) + { + *(suffix + i) = hicn_net_to_host_32 (*(suffix + i)); + } } static inline bool @@ -132,15 +152,6 @@ interest_manifest_is_valid (interest_manifest_header_t *int_manifest_header, } static inline void -interest_manifest_init (interest_manifest_header_t *int_manifest_header) -{ - int_manifest_header->n_suffixes = 0; - int_manifest_header->padding = 0; - memset (int_manifest_header->request_bitmap, 0, - sizeof (int_manifest_header->request_bitmap)); -} - -static inline void interest_manifest_add_suffix (interest_manifest_header_t *int_manifest_header, hicn_name_suffix_t suffix) { @@ -152,6 +163,18 @@ interest_manifest_add_suffix (interest_manifest_header_t *int_manifest_header, } static inline void +interest_manifest_init (interest_manifest_header_t *int_manifest_header, + u32 fist_suffix) +{ + int_manifest_header->n_suffixes = 0; + int_manifest_header->padding = 0; + memset (int_manifest_header->request_bitmap, 0, + sizeof (int_manifest_header->request_bitmap)); + + interest_manifest_add_suffix (int_manifest_header, fist_suffix); +} + +static inline void interest_manifest_del_suffix (interest_manifest_header_t *int_manifest_header, hicn_uword pos) { @@ -182,13 +205,16 @@ interest_manifest_update_bitmap (const hicn_uword *initial_bitmap, #define _FIRST(h) (hicn_name_suffix_t *) (h + 1) -#define interest_manifest_foreach_suffix(header, suffix) \ +#define interest_manifest_foreach_suffix(header, suffix, pos) \ for (suffix = _FIRST (header) + bitmap_first_set_no_check ( \ - header->request_bitmap, BITMAP_SIZE); \ + header->request_bitmap, BITMAP_SIZE), \ + pos = 0; \ suffix - _FIRST (header) < header->n_suffixes; \ - suffix = _FIRST (header) + \ - bitmap_next_set_no_check (header->request_bitmap, \ - suffix - _FIRST (header) + 1, \ - BITMAP_SIZE)) + pos = suffix - _FIRST (header) + 1, \ + suffix = _FIRST (header) + \ + bitmap_next_set_no_check (header->request_bitmap, \ + suffix - _FIRST (header) + 1, \ + BITMAP_SIZE), \ + pos = suffix - _FIRST (header)) #endif /* HICNLIGHT_INTEREST_MANIFEST_H */ |