26 #ifndef ROHC_COMMON_LIST_H 27 #define ROHC_COMMON_LIST_H 36 #define ROHC_LIST_MAX_ITEM 16U 37 #if ROHC_LIST_MAX_ITEM <= 7 38 # error "translation table must be larger enough for indexes stored on 3 bits" 54 #define ROHC_LIST_GEN_ID_MAX 0xffU 55 #define ROHC_LIST_GEN_ID_ANON (ROHC_LIST_GEN_ID_MAX + 1) 56 #define ROHC_LIST_GEN_ID_NONE (ROHC_LIST_GEN_ID_MAX + 2) 65 #define ROHC_LIST_ITEMS_MAX 15U 77 #if ((defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ 78 (defined(__GNUC__) && defined(__GNUC_MINOR__) && \ 79 (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)))) 80 _Static_assert((
sizeof(
struct rohc_list) % 8) == 0,
81 "struct rohc_list length should be multiple of 8 bytes");
104 #define ROHC_LIST_ITEM_DATA_MAX IPV6_OPT_HDR_LEN_MAX 113 #if ((defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \ 114 (defined(__GNUC__) && defined(__GNUC_MINOR__) && \ 115 (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)))) 117 "data in struct rohc_list_item should be aligned on 8 bytes");
119 "struct rohc_list_item length should be multiple of 8 bytes");
125 const uint8_t ext_type,
126 const uint8_t *
const ext_data,
127 const size_t ext_len)
128 __attribute__((warn_unused_result,
nonnull(1, 3)));
141 __attribute__((warn_unused_result,
nonnull(1, 2), pure));
145 __attribute__((warn_unused_result,
nonnull(1, 2), pure));
152 const uint8_t item_type,
153 const uint8_t *
const item_data,
154 const size_t item_len)
155 __attribute__((warn_unused_result,
nonnull(2, 4)));
Definition: ip_numbers.h:62
Definition: ip_numbers.h:70
uint16_t length
Definition: rohc_list.h:107
uint8_t counter
Definition: rohc_list.h:96
bool known
Definition: rohc_list.h:94
void rohc_list_reset(struct rohc_list *const list)
Reset the state of the given compressed list.
Definition: rohc_list.c:45
Definition: rohc_list.h:46
uint8_t counter
Definition: rohc_list.h:73
bool rohc_list_supersede(const struct rohc_list *const large, const struct rohc_list *const small)
Does the first list contains the second list?
Definition: rohc_list.c:86
struct rohc_list_item * items[ROHC_LIST_ITEMS_MAX]
Definition: rohc_list.h:67
Definition: rohc_list.h:48
ext_header_version type
Definition: rohc_list.h:91
bool rohc_list_equal(const struct rohc_list *const list1, const struct rohc_list *const list2)
Are the two given lists equal?
Definition: rohc_list.c:66
uint8_t data[ROHC_LIST_ITEM_DATA_MAX]
Definition: rohc_list.h:109
bool(* rohc_list_item_cmp)(const struct rohc_list_item *const item, const uint8_t ext_type, const uint8_t *const ext_data, const size_t ext_len)
Definition: rohc_list.h:124
int rohc_list_item_update_if_changed(rohc_list_item_cmp cmp_item, struct rohc_list_item *const list_item, const uint8_t item_type, const uint8_t *const item_data, const size_t item_len)
Update the content of the given compressed item if it changed.
Definition: rohc_list.c:143
#define ROHC_LIST_ITEMS_MAX
Definition: rohc_list.h:65
Definition: ip_numbers.h:74
void rohc_list_item_reset(struct rohc_list_item *const list_item)
Reset the given list item.
Definition: rohc_list.c:120
Definition: rohc_list.h:45
Definition: ip_numbers.h:52
#define ROHC_LIST_ITEM_DATA_MAX
The maximum length (in bytes) of item data.
Definition: rohc_list.h:104
ext_header_version
Header version.
Definition: rohc_list.h:43
A list item.
Definition: rohc_list.h:88
Define a list for compression.
Definition: rohc_list.h:62
Definition: rohc_list.h:47
uint16_t id
Definition: rohc_list.h:69
uint8_t items_nr
Definition: rohc_list.h:71
Defines the IPv4 protocol numbers.