ROHC compression/decompression library
|
ROHC generic list decompression. More...
Functions | |
static int | rohc_list_decode (struct list_decomp *decomp, const uint8_t *packet, size_t packet_len) |
Decompress the compressed list in given packet. More... | |
static int | rohc_list_decode_type_0 (struct list_decomp *const decomp, const uint8_t *packet, size_t packet_len, const unsigned int gen_id, const int ps, const uint8_t m) |
Decode an extension list type 0. More... | |
static int | rohc_list_decode_type_1 (struct list_decomp *const decomp, const uint8_t *packet, size_t packet_len, const unsigned int gen_id, const int ps, const int xi_1) |
Decode an extension list type 1. More... | |
static int | rohc_list_decode_type_2 (struct list_decomp *const decomp, const uint8_t *packet, size_t packet_len, const unsigned int gen_id) |
Decode an extension list type 2. More... | |
static int | rohc_list_decode_type_3 (struct list_decomp *const decomp, const uint8_t *packet, size_t packet_len, const unsigned int gen_id, const int ps, const int xi_1) |
Decode an extension list type 3. More... | |
static bool | rohc_list_is_gen_id_known (const struct list_decomp *const decomp, const unsigned int gen_id) |
Check if the given gen_id is known, ie. present in list table. More... | |
static int | rohc_list_parse_insertion_scheme (struct list_decomp *const decomp, const uint8_t *packet, size_t packet_len, const int ps, const int xi_1, const size_t items_nr, const struct rohc_list *const ref_list, struct rohc_list *const ins_list) |
Process the insertion scheme of the list compression. More... | |
static int | rohc_list_parse_removal_scheme (struct list_decomp *const decomp, const uint8_t *packet, size_t packet_len, const struct rohc_list *const ref_list, struct rohc_list *const rem_list) |
Process the removal scheme of the list compression. More... | |
static int | rohc_list_decode_mask (struct list_decomp *const decomp, const char *const descr, const uint8_t *const packet, const size_t packet_len, uint8_t mask[2], size_t *const mask_len) |
Determine the number of bits set to 1 in the insertion/removal bit mask. More... | |
static size_t | rohc_list_get_xi_nr (const uint8_t ins_mask[2], const size_t ins_mask_len) |
Determine the number of indexes in the XI list. More... | |
static size_t | rohc_list_get_xi_len (const size_t xi_nr, const int ps) |
Determine the length of the XI list. More... | |
static uint8_t | rohc_list_get_xi_type_0 (const int ps, const size_t xi_index, const uint8_t *const data, bool *const is_item_present) |
Get the XI information, ie. the X bit and the index value. More... | |
static uint8_t | rohc_list_get_xi_type_2or3 (const int ps, const size_t xi_index, const uint8_t xi_1, const uint8_t *const data, bool *const is_item_present) |
Get the XI information, ie. the X bit and the index value. More... | |
static uint8_t | rohc_get_bit (const uint8_t byte, const size_t pos) |
Get the bit in the given byte at the given position. More... | |
int | rohc_list_decode_maybe (struct list_decomp *decomp, const uint8_t *packet, size_t packet_len) |
Decompress the compressed list in given packet if present. More... | |
bool | rohc_decomp_list_create_item (struct list_decomp *const decomp, const unsigned int xi_index, const unsigned int xi_index_value, const uint8_t *const rohc_packet, const size_t rohc_max_len, size_t *const item_length) |
Create a list item from a XI item. More... | |
ROHC generic list decompression.
bool rohc_decomp_list_create_item | ( | struct list_decomp *const | decomp, |
const unsigned int | xi_index, | ||
const unsigned int | xi_index_value, | ||
const uint8_t *const | rohc_packet, | ||
const size_t | rohc_max_len, | ||
size_t *const | item_length | ||
) |
Create a list item from a XI item.
decomp | The context for list decompression | |
xi_index | The XI index | |
xi_index_value | The XI index value | |
rohc_packet | The beginning of the XI item in the ROHC header | |
rohc_max_len | The remaining length (in bytes) of the ROHC header | |
[out] | item_length | The length (in bytes) of the created item |
|
static |
Get the bit in the given byte at the given position.
byte | The byte to analyse |
pos | The position between 0 and 7 |
|
static |
Decompress the compressed list in given packet.
decomp | The list decompressor |
packet | The ROHC packet to decompress |
packet_len | The remaining length of the packet to decode (in bytes) |
|
static |
Determine the number of bits set to 1 in the insertion/removal bit mask.
decomp | The list decompressor | |
descr | The name of bit mask being decoded | |
packet | The ROHC packet to decompress | |
packet_len | The length (in bytes) of the packet to decompress | |
[out] | mask | The insertion/removal bit mask on 1-2 bytes |
[out] | mask_len | The length of the insertion/removal mask (in bits) |
int rohc_list_decode_maybe | ( | struct list_decomp * | decomp, |
const uint8_t * | packet, | ||
size_t | packet_len | ||
) |
Decompress the compressed list in given packet if present.
decomp | The list decompressor |
packet | The ROHC packet to decompress |
packet_len | The remaining length of the packet to decode (in bytes) |
|
static |
Decode an extension list type 0.
decomp | The list decompressor |
packet | The ROHC packet to decompress |
packet_len | The length (in bytes) of the packet to decompress |
gen_id | The id of the current list, maybe ROHC_LIST_GEN_ID_ANON if not defined |
ps | The ps field |
m | The m field |
|
static |
Decode an extension list type 1.
decomp | The list decompressor |
packet | The ROHC packet to decompress |
packet_len | The length (in bytes) of the packet to decompress |
gen_id | The id of the current list, maybe ROHC_LIST_GEN_ID_ANON if not defined |
ps | The ps field |
xi_1 | The XI 1 field if PS = 1 (4-bit XI) |
|
static |
Decode an extension list type 2.
decomp | The list decompressor |
packet | The ROHC packet to decompress |
packet_len | The length (in bytes) of the packet to decompress |
gen_id | The id of the current list, maybe ROHC_LIST_GEN_ID_ANON if not defined |
|
static |
Decode an extension list type 3.
decomp | The list decompressor |
packet | The ROHC packet to decompress |
packet_len | The length (in bytes) of the packet to decompress |
gen_id | The id of the current list maybe ROHC_LIST_GEN_ID_ANON if not defined |
ps | The ps field |
xi_1 | The XI 1 field if PS = 1 (4-bit XI) |
|
static |
Determine the length of the XI list.
xi_nr | The number of indexes in the XI list |
ps | The PS bit |
|
static |
Determine the number of indexes in the XI list.
ins_mask | The insertion bit mask |
ins_mask_len | The length of the insertion bit mask (in bits) |
|
static |
Get the XI information, ie. the X bit and the index value.
ps | The PS bit | |
xi_index | The index of the XI | |
data | The data to parse | |
[out] | is_item_present | Whether the XI item shall be present or not |
|
static |
Get the XI information, ie. the X bit and the index value.
ps | The PS bit | |
xi_index | The index of the XI | |
xi_1 | The XI 1 field if PS = 1 (4-bit XI) | |
data | The data to parse | |
[out] | is_item_present | Whether the XI item shall be present or not |
|
static |
Check if the given gen_id is known, ie. present in list table.
decomp | The list decompressor |
gen_id | The gen_id to check for |
|
static |
Process the insertion scheme of the list compression.
decomp | The list decompressor | |
packet | The ROHC packet to decompress | |
packet_len | The length (in bytes) of the packet to decompress | |
ps | The PS bit | |
xi_1 | The XI 1 field if PS = 1 (4-bit XI) | |
items_nr | The number of items in the initial list | |
ref_list | The list to use as reference | |
[out] | ins_list | The list with new items added |
|
static |
Process the removal scheme of the list compression.
decomp | The list decompressor | |
packet | The ROHC packet to decompress | |
packet_len | The length (in bytes) of the packet to decompress | |
ref_list | The list to use as reference | |
[in,out] | rem_list | in: the initial list, out: the list with superfluous items removed |