Library of decoding methods from RFC4997 and RFC4996.
More...
#include "rfc4996.h"
#include "rohc_bit_ops.h"
#include "rohc_traces_internal.h"
#include "rohc_decomp_internals.h"
#include "rohc_debug.h"
#include "rohc_utils.h"
#include "crc.h"
#include "protocols/tcp.h"
#include "rohc_packets.h"
#include "rohc_decomp.h"
#include <string.h>
#include <assert.h>
|
int | d_static_or_irreg8 (const uint8_t *const rohc_data, const size_t rohc_len, const int indicator, struct rohc_lsb_field8 *const lsb) |
| Decompress the 8-bit given value, according to the indicator. More...
|
|
int | d_static_or_irreg16 (const uint8_t *const rohc_data, const size_t rohc_len, const int indicator, struct rohc_lsb_field16 *const lsb) |
| Decompress the 16-bit given value, according to the indicator. More...
|
|
int | d_static_or_irreg32 (const uint8_t *const rohc_data, const size_t rohc_len, const int indicator, struct rohc_lsb_field32 *const lsb) |
| Decompress the 32-bit given value, according to the indicator. More...
|
|
int | variable_length_32_dec (const uint8_t *const rohc_data, const size_t rohc_len, const int indicator, struct rohc_lsb_field32 *const lsb) |
| Decode the 32 bits value, according to the indicator. More...
|
|
unsigned int | rsf_index_dec (const unsigned int rsf_index) |
| Calculate the rsf flags from the rsf index. More...
|
|
bool | d_ip_id_lsb (const struct rohc_decomp_ctxt *const context, const struct rohc_lsb_decode *const ip_id_lsb_ctxt, const uint16_t msn, const uint32_t ip_id_bits, const size_t ip_id_bits_nr, const rohc_lsb_shift_t p, uint16_t *const ip_id) |
| Decompress the lower bits of IP-ID. More...
|
|
int | d_optional_ip_id_lsb (const struct rohc_decomp_ctxt *const context, const uint8_t *const rohc_data, const size_t data_len, const int behavior, const int indicator, struct rohc_lsb_field16 *const lsb) |
| Decompress the IP-ID. More...
|
|
◆ d_ip_id_lsb()
bool d_ip_id_lsb |
( |
const struct rohc_decomp_ctxt *const |
context, |
|
|
const struct rohc_lsb_decode *const |
ip_id_lsb_ctxt, |
|
|
const uint16_t |
msn, |
|
|
const uint32_t |
ip_id_bits, |
|
|
const size_t |
ip_id_bits_nr, |
|
|
const rohc_lsb_shift_t |
p, |
|
|
uint16_t *const |
ip_id |
|
) |
| |
Decompress the lower bits of IP-ID.
See RFC4996 page 75
- Parameters
-
| context | The decompression context |
| ip_id_lsb_ctxt | The LSB decoding context for the IP-ID offset |
| msn | The Master Sequence Number |
| ip_id_bits | The received IP-ID offset bits to decode |
| ip_id_bits_nr | The number of received IP-ID offset bits to decode |
| p | The offset parameter p to use for LSB decoding |
[out] | ip_id | The decoded IP-ID value |
- Returns
- true if IP-ID was successfully decoded, false if decoding failed
- Todo:
- TODO: could be merged with decomp/schemes/ip_id_offset.[ch] module
◆ d_optional_ip_id_lsb()
int d_optional_ip_id_lsb |
( |
const struct rohc_decomp_ctxt *const |
context, |
|
|
const uint8_t *const |
rohc_data, |
|
|
const size_t |
data_len, |
|
|
const int |
behavior, |
|
|
const int |
indicator, |
|
|
struct rohc_lsb_field16 *const |
lsb |
|
) |
| |
Decompress the IP-ID.
See RFC4996 page 76
- Parameters
-
| context | The decompression context |
| rohc_data | The ROHC data to parse |
| data_len | The length of the ROHC data to parse (in bytes) |
| behavior | The IP-ID behavior |
| indicator | The compression indicator |
[out] | lsb | The LSB bits extracted from the ROHC packet |
- Returns
- The length (in bytes) of the compressed value, -1 if ROHC data is malformed
◆ d_static_or_irreg16()
int d_static_or_irreg16 |
( |
const uint8_t *const |
rohc_data, |
|
|
const size_t |
rohc_len, |
|
|
const int |
indicator, |
|
|
struct rohc_lsb_field16 *const |
lsb |
|
) |
| |
Decompress the 16-bit given value, according to the indicator.
- Parameters
-
| rohc_data | The ROHC data to parse |
| rohc_len | The length of the ROHC data to parse (in bytes) |
| indicator | The indicator of compression |
[out] | lsb | The LSB bits extracted from the ROHC packet |
- Returns
- The length (in bytes) of the compressed value, -1 if ROHC data is malformed
◆ d_static_or_irreg32()
int d_static_or_irreg32 |
( |
const uint8_t *const |
rohc_data, |
|
|
const size_t |
rohc_len, |
|
|
const int |
indicator, |
|
|
struct rohc_lsb_field32 *const |
lsb |
|
) |
| |
Decompress the 32-bit given value, according to the indicator.
- Parameters
-
| rohc_data | The ROHC data to parse |
| rohc_len | The length of the ROHC data to parse (in bytes) |
| indicator | The indicator of compression |
[out] | lsb | The LSB bits extracted from the ROHC packet |
- Returns
- The length (in bytes) of the compressed value, -1 if ROHC data is malformed
◆ d_static_or_irreg8()
int d_static_or_irreg8 |
( |
const uint8_t *const |
rohc_data, |
|
|
const size_t |
rohc_len, |
|
|
const int |
indicator, |
|
|
struct rohc_lsb_field8 *const |
lsb |
|
) |
| |
Decompress the 8-bit given value, according to the indicator.
- Parameters
-
| rohc_data | The ROHC data to parse |
| rohc_len | The length of the ROHC data to parse (in bytes) |
| indicator | The indicator of compression |
[out] | lsb | The LSB bits extracted from the ROHC packet |
- Returns
- The length (in bytes) of the compressed value, -1 if ROHC data is malformed
◆ rsf_index_dec()
unsigned int rsf_index_dec |
( |
const unsigned int |
rsf_index | ) |
|
Calculate the rsf flags from the rsf index.
See RFC4996 page 71
- Parameters
-
- Returns
- The rsf flags
◆ variable_length_32_dec()
int variable_length_32_dec |
( |
const uint8_t *const |
rohc_data, |
|
|
const size_t |
rohc_len, |
|
|
const int |
indicator, |
|
|
struct rohc_lsb_field32 *const |
lsb |
|
) |
| |
Decode the 32 bits value, according to the indicator.
See RFC4996 page 46
- Parameters
-
| rohc_data | The ROHC data to parse |
| rohc_len | The length of the ROHC data to parse (in bytes) |
| indicator | The indicator of compression |
[out] | lsb | The LSB bits extracted from the ROHC packet |
- Returns
- The length (in bytes) of the compressed value, -1 if ROHC data is malformed