ROHC compression/decompression library
rohc_decomp_internals.h
Go to the documentation of this file.
1 /*
2  * Copyright 2012,2013,2014 Didier Barvaux
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 /**
20  * @file rohc_decomp_internals.h
21  * @brief Internal structures for ROHC decompression
22  * @author Didier Barvaux <didier.barvaux@toulouse.viveris.com>
23  * @author Didier Barvaux <didier@barvaux.org>
24  * @author David Moreau from TAS
25  */
26 
27 #ifndef ROHC_DECOMP_INTERNALS_H
28 #define ROHC_DECOMP_INTERNALS_H
29 
30 #include "rohc_internal.h"
31 #include "rohc_decomp.h"
32 #include "rohc_traces_internal.h"
33 #include "feedback_create.h"
34 #include "crc.h"
35 
36 
37 /*
38  * Constants and macros
39  */
40 
41 
42 /** The number of ROHC profiles ready to be used */
43 #define D_NUM_PROFILES 10U
44 
45 
46 /** Print a warning trace for the given decompression context */
47 #define rohc_decomp_warn(context, format, ...) \
48  rohc_warning((context)->decompressor, ROHC_TRACE_DECOMP, \
49  (context)->profile->id, \
50  format, ##__VA_ARGS__)
51 
52 /** Print a debug trace for the given decompression context */
53 #define rohc_decomp_debug(context, format, ...) \
54  rohc_debug((context)->decompressor, ROHC_TRACE_DECOMP, \
55  (context)->profile->id, \
56  format, ##__VA_ARGS__)
57 
58 /** Dump a buffer for the given compression context */
59 #define rohc_decomp_dump_buf(context, descr, buf, buf_len) \
60  do { \
61  if(((context)->decompressor->features & ROHC_DECOMP_FEATURE_DUMP_PACKETS) != 0) { \
62  rohc_dump_buf((context)->decompressor->trace_callback, \
63  (context)->decompressor->trace_callback_priv, \
64  ROHC_TRACE_DECOMP, ROHC_TRACE_DEBUG, \
65  descr, buf, buf_len); \
66  } \
67  } while(0)
68 
69 
70 /*
71  * Definitions of ROHC compression structures
72  */
73 
74 
75 /**
76  * @brief Some compressor statistics
77  */
79 {
80  /* The number of received packets */
81  unsigned long received;
82  /* The number of bad decompressions due to wrong CRC */
83  unsigned long failed_crc;
84  /* The number of bad decompressions due to being in the No Context state */
85  unsigned long failed_no_context;
86  /* The number of bad decompressions */
87  unsigned long failed_decomp;
88 
89  /** The cumulative size of the compressed packets */
90  unsigned long total_compressed_size;
91  /** The cumulative size of the uncompressed packets */
92  unsigned long total_uncompressed_size;
93 
94  /** The cumulative number of successful corrections upon CRC failure */
95  unsigned long corrected_crc_failures;
96  /** The cumulative number of successful corrections of SN wraparound
97  * upon CRC failure */
98  unsigned long corrected_sn_wraparounds;
99  /** The cumulative number of successful corrections of incorrect SN updates
100  * upon CRC failure */
102 };
103 
104 
105 /**
106  * @brief The user configuration for feedback rate-limiting
107  *
108  * The k and n parameters define a ratio of packets for rate-limiting: an action
109  * is performed only for k packets out of the last n packets.
110  */
112 {
113  size_t k; /**< The k rate-limit parameter */
114  size_t n; /**< The n rate-limit parameter */
115  size_t threshold; /**< The computed k/n ratio */
116 };
117 
118 
119 /** The user configuration for feedback rate-limiting */
121 {
122  /** The rate-limit parameters to avoid sending feedback too often */
123  struct rohc_ack_rate_limit speed;
124  /** The rate-limit parameters to avoid sending NACKs too quickly */
125  struct rohc_ack_rate_limit nack;
126  /** The rate-limit parameters to avoid sending STATIC-NACKs too quickly */
127  struct rohc_ack_rate_limit static_nack;
128 };
129 
130 
131 /** The statistics collected about the last needed/sent feedbacks */
133 {
134  uint32_t needed; /**< The needed feedbacks over the last 32 packets */
135  uint32_t sent; /**< The sent feedbacks over the last 32 packets */
136 };
137 
138 
139 /**
140  * @brief The ROHC decompressor
141  */
143 {
144  /** The medium associated with the decompressor */
145  struct rohc_medium medium;
146 
147  /** Enabled/disabled features for the decompressor */
149 
150  /** Which profiles are enabled and with one are not? */
151  bool enabled_profiles[D_NUM_PROFILES];
152 
153  /** The operation mode that the contexts shall target */
155 
156  /** The array of decompression contexts that use the decompressor */
158  /** The number of decompression contexts in use */
160  /** The last decompression context used by the decompressor */
162 
163 
164  /* feedback-related variables */
165 
166  /** The maximum number of packets sent during one RTT */
167  size_t prtt;
168  /** The minimum number of SN bits to transmit in feedbacks */
170  /** The configuration for feedback rate-limiting */
171  struct rohc_ack_rate_limits ack_rate_limits;
172  /** Whether the last decompressed packets failed or not */
174  /** The information for feedback rate-limiting */
175  struct rohc_ack_stats last_pkt_feedbacks[ROHC_FEEDBACK_RESERVED];
176 
177 
178  /* segment-related variables */
179 
180 /** The maximal value for MRRU */
181 #define ROHC_MAX_MRRU 65535
182  /** The Reconstructed Reception Unit */
183  uint8_t rru[ROHC_MAX_MRRU];
184  /** The length (in bytes) of the Reconstructed Reception Unit */
185  size_t rru_len;
186  /** The Maximum Reconstructed Reception Unit (MRRU) */
187  size_t mrru;
188 
189 
190  /* CRC-related variables: */
191 
192  /** The table to enable fast CRC-3 computation */
193  uint8_t crc_table_3[256];
194  /** The table to enable fast CRC-7 computation */
195  uint8_t crc_table_7[256];
196  /** The table to enable fast CRC-8 computation */
197  uint8_t crc_table_8[256];
198 
199 
200  /** Some statistics about the decompression processes */
201  struct d_statistics stats;
202 
203  /** The callback function used to manage traces */
205  /** The private context of the callback function used to manage traces */
207 };
208 
209 
210 /**
211  * @brief The different correction algorithms available in case of CRC failure
212  */
213 typedef enum
214 {
215  ROHC_DECOMP_CRC_CORR_SN_NONE = 0, /**< No correction */
216  ROHC_DECOMP_CRC_CORR_SN_WRAP = 1, /**< Correction of SN wraparound */
217  ROHC_DECOMP_CRC_CORR_SN_UPDATES = 2, /**< Correction of incorrect SN updates */
218 
220 
221 
222 /** The context for correction upon CRC failure */
224 {
225  /** The algorithm being used for correction CRC failure */
227  /** Correction counter (see e and f in 5.3.2.2.4 of the RFC 3095) */
228  size_t counter;
229 /** The number of last packets to record arrival times for */
230 #define ROHC_MAX_ARRIVAL_TIMES 10U
231  /** The arrival times for the last packets */
232  struct rohc_ts arrival_times[ROHC_MAX_ARRIVAL_TIMES];
233  /** The number of arrival times in arrival_times */
235  /** The index for the arrival time of the next packet */
237 };
238 
239 
240 /** The information related to the CRC of a ROHC packet */
242 {
243  rohc_crc_type_t type; /**< The type of CRC that protects the ROHC header */
244  uint8_t bits; /**< The CRC bits found in ROHC header */
245  size_t bits_nr; /**< The number of CRC bits found in ROHC header */
246 };
247 
248 
249 /**
250  * @brief The volatile part of the ROHC decompression context
251  *
252  * The volatile part of the ROHC decompression context lasts only one single
253  * packet. Between two ROHC packets, the volatile part of the context is
254  * erased.
255  */
257 {
258  /** The CRC information extracted from the ROHC packet being parsed */
259  struct rohc_decomp_crc crc;
260 
261  /** The profile-specific data for bits extracted from the ROHC packet,
262  * defined by the profiles */
263  void *extr_bits;
264 
265  /** The profile-specific data for values decoded from persistent context
266  * and bits extracted from the ROHC packet, defined by the profiles */
268 };
269 
270 
271 /**
272  * @brief The ROHC decompression context
273  */
275 {
276  /** The Context IDentifier (CID) */
278 
279  /** The associated decompressor */
281 
282  /** The associated profile */
284  /** The persistent profile-specific data, defined by the profiles */
286  /** The volatile data, erased between two ROHC packets */
287  struct rohc_decomp_volat_ctxt volat_ctxt;
288 
289  /** The operation mode in which the context operates */
291  /** The operation state in which the context operates */
293 
294  /** Usage timestamp */
295  unsigned int latest_used;
296  /** Usage timestamp */
297  unsigned int first_used;
298 
299  /** Whether the last decompressed packets failed or not */
301  /** The information for feedback rate-limiting */
302  struct rohc_ack_stats last_pkt_feedbacks[ROHC_FEEDBACK_RESERVED];
303 
304  /** The context for corrections upon CRC failure */
305  struct rohc_decomp_crc_corr_ctxt crc_corr;
306 
307  /* below are some statistics */
308 
309  /** The type of the last decompressed ROHC packet */
311 
312  /** The cumulated size of the uncompressed packets */
313  unsigned long total_uncompressed_size;
314  /** The cumulated size of the compressed packets */
315  unsigned long total_compressed_size;
316  /** The cumulated size of the uncompressed headers */
318  /** The cumulated size of the compressed headers */
319  unsigned long header_compressed_size;
320 
321  /** The total size of the last uncompressed packet */
323  /** The total size of the last compressed packet */
325  /** The header size of the last uncompressed packet */
327  /** The header size of the last compressed packet */
329 
330  /* The number of received packets */
331  unsigned long num_recv_packets;
332  /** The number of successful corrections upon CRC failure */
333  unsigned long corrected_crc_failures;
334  /** The number of successful corrections of SN wraparound upon CRC failure */
336  /** The number of successful corrections of incorrect SN updates upon CRC
337  * failure */
339 
340  /** The number of (possible) lost packet(s) before last packet */
341  unsigned long nr_lost_packets;
342  /** The number of packet(s) before the last packet if late */
343  unsigned long nr_misordered_packets;
344  /** Is last packet a (possible) duplicated packet? */
346 };
347 
348 
349 typedef bool (*rohc_decomp_new_context_t)(const struct rohc_decomp_ctxt *const context,
350  void **const persist_ctxt,
351  struct rohc_decomp_volat_ctxt *const volat_ctxt)
352  __attribute__((warn_unused_result, nonnull(1, 2, 3)));
353 
354 typedef void (*rohc_decomp_free_context_t)(void *const persist_ctxt,
355  const struct rohc_decomp_volat_ctxt *const volat_ctxt)
356  __attribute__((nonnull(2)));
357 
358 typedef rohc_packet_t (*rohc_decomp_detect_pkt_type_t) (const struct rohc_decomp_ctxt *const context,
359  const uint8_t *const rohc_packet,
360  const size_t rohc_length,
361  const size_t large_cid_len)
362  __attribute__((warn_unused_result, nonnull(1, 2)));
363 
364 typedef bool (*rohc_decomp_parse_pkt_t)(const struct rohc_decomp_ctxt *const context,
365  const struct rohc_buf rohc_packet,
366  const size_t large_cid_len,
367  rohc_packet_t *const packet_type,
368  struct rohc_decomp_crc *const extr_crc,
369  void *const extr_bits,
370  size_t *const rohc_hdr_len)
371  __attribute__((warn_unused_result, nonnull(1, 4, 5, 6, 7)));
372 
373 typedef rohc_status_t (*rohc_decomp_decode_bits_t)(const struct rohc_decomp_ctxt *const context,
374  const void *const extr_bits,
375  const size_t payload_len,
376  void *const decoded_values)
377  __attribute__((warn_unused_result, nonnull(1, 2, 4)));
378 
379 typedef rohc_status_t (*rohc_decomp_build_hdrs_t)(const struct rohc_decomp *const decomp,
380  const struct rohc_decomp_ctxt *const context,
382  const struct rohc_decomp_crc *const extr_crc,
383  const void *const decoded_values,
384  const size_t payload_len,
385  struct rohc_buf *const uncomp_hdrs,
386  size_t *const uncomp_hdrs_len)
387  __attribute__((warn_unused_result, nonnull(1, 2, 4, 5, 7, 8)));
388 
389 typedef void (*rohc_decomp_update_ctxt_t)(struct rohc_decomp_ctxt *const context,
390  const void *const decoded_values,
391  const size_t payload_len,
392  bool *const do_change_mode)
393  __attribute__((nonnull(1, 2, 4)));
394 
395 typedef bool (*rohc_decomp_attempt_repair_t)(const struct rohc_decomp *const decomp,
396  const struct rohc_decomp_ctxt *const context,
397  const struct rohc_ts pkt_arrival_time,
398  struct rohc_decomp_crc_corr_ctxt *const crc_corr,
399  void *const extr_bits)
400  __attribute__((warn_unused_result, nonnull(1, 2, 4, 5)));
401 
402 typedef uint32_t (*rohc_decomp_get_sn_t)(const struct rohc_decomp_ctxt *const context)
403  __attribute__((warn_unused_result, nonnull(1)));
404 
405 
406 /**
407  * @brief The ROHC decompression profile.
408  *
409  * The object defines a ROHC profile. Each field must be filled in
410  * for each new profile.
411  */
413 {
414  /** The profile ID as reserved by IANA */
416 
417  /** The maximum number of bits of the Master Sequence Number (MSN) */
418  const size_t msn_max_bits;
419 
420  /** @brief The handler used to create the profile-specific part of the
421  * decompression context */
423 
424  /** @brief The handler used to destroy the profile-specific part of the
425  * decompression context */
427 
428  /** The handler used to detect the type of the ROHC packet */
430 
431  /* The handler used to parse a ROHC packet */
433 
434  /* The handler used to decode the bits extracted from a ROHC packet */
436 
437  /* The handler used to build the uncompressed packet after decoding */
439 
440  /* The handler used to update the context after successful decompression */
442 
443  /* The handler used to attempt packet/context correction upon CRC failure */
445 
446  /* The handler used to retrieve the Sequence Number (SN) */
448 };
449 
450 #endif
451 
size_t arrival_times_index
Definition: rohc_decomp_internals.h:236
unsigned long corrected_crc_failures
Definition: rohc_decomp_internals.h:333
Functions to create ROHC feedback.
unsigned long header_last_compressed_size
Definition: rohc_decomp_internals.h:328
#define ROHC_MAX_ARRIVAL_TIMES
Definition: rohc_decomp_internals.h:230
The ROHC decompressor.
Definition: rohc_decomp_internals.h:142
rohc_decomp_parse_pkt_t parse_pkt
Definition: rohc_decomp_internals.h:432
Definition: rohc_decomp_internals.h:215
size_t rohc_cid_t
Definition: rohc.h:195
unsigned long corrected_wrong_sn_updates
Definition: rohc_decomp_internals.h:101
uint32_t needed
Definition: rohc_decomp_internals.h:134
Definition: rohc_decomp_internals.h:132
rohc_mode_t
ROHC operation modes.
Definition: rohc.h:111
The volatile part of the ROHC decompression context.
Definition: rohc_decomp_internals.h:256
size_t arrival_times_nr
Definition: rohc_decomp_internals.h:234
rohc_packet_t packet_type
Definition: rohc_decomp_internals.h:310
const rohc_profile_t id
Definition: rohc_decomp_internals.h:415
rohc_decomp_build_hdrs_t build_hdrs
Definition: rohc_decomp_internals.h:438
unsigned long corrected_wrong_sn_updates
Definition: rohc_decomp_internals.h:338
uint32_t(* rohc_decomp_get_sn_t)(const struct rohc_decomp_ctxt *const context)
Definition: rohc_decomp_internals.h:402
size_t sn_feedback_min_bits
Definition: rohc_decomp_internals.h:169
rohc_decomp_new_context_t new_context
The handler used to create the profile-specific part of the decompression context.
Definition: rohc_decomp_internals.h:422
unsigned long total_last_uncompressed_size
Definition: rohc_decomp_internals.h:322
rohc_status_t
The status code of several functions in the library API.
Definition: rohc.h:79
struct rohc_decomp * decompressor
Definition: rohc_decomp_internals.h:280
unsigned long header_uncompressed_size
Definition: rohc_decomp_internals.h:317
unsigned long num_recv_packets
Definition: rohc_decomp_internals.h:331
ROHC CRC routines.
size_t rru_len
Definition: rohc_decomp_internals.h:185
unsigned long corrected_sn_wraparounds
Definition: rohc_decomp_internals.h:335
bool(* rohc_decomp_attempt_repair_t)(const struct rohc_decomp *const decomp, const struct rohc_decomp_ctxt *const context, const struct rohc_ts pkt_arrival_time, struct rohc_decomp_crc_corr_ctxt *const crc_corr, void *const extr_bits)
Definition: rohc_decomp_internals.h:395
unsigned long nr_misordered_packets
Definition: rohc_decomp_internals.h:343
The ROHC decompression profile.
Definition: rohc_decomp_internals.h:412
rohc_decomp_attempt_repair_t attempt_repair
Definition: rohc_decomp_internals.h:444
unsigned long corrected_crc_failures
Definition: rohc_decomp_internals.h:95
unsigned int first_used
Definition: rohc_decomp_internals.h:297
size_t threshold
Definition: rohc_decomp_internals.h:115
unsigned long total_last_compressed_size
Definition: rohc_decomp_internals.h:324
void * extr_bits
Definition: rohc_decomp_internals.h:263
void * persist_ctxt
Definition: rohc_decomp_internals.h:285
unsigned long total_compressed_size
Definition: rohc_decomp_internals.h:315
Definition: rohc_decomp_internals.h:216
uint8_t bits
Definition: rohc_decomp_internals.h:244
void(* rohc_trace_callback2_t)(void *const priv_ctxt, const rohc_trace_level_t level, const rohc_trace_entity_t entity, const int profile, const char *const format,...)
The function prototype for the trace callback.
Definition: rohc_traces.h:118
void * decoded_values
Definition: rohc_decomp_internals.h:267
size_t prtt
Definition: rohc_decomp_internals.h:167
uint32_t sent
Definition: rohc_decomp_internals.h:135
rohc_decomp_update_ctxt_t update_ctxt
Definition: rohc_decomp_internals.h:441
size_t mrru
Definition: rohc_decomp_internals.h:187
uint32_t last_pkts_errors
Definition: rohc_decomp_internals.h:173
Definition: feedback.h:55
unsigned long total_uncompressed_size
Definition: rohc_decomp_internals.h:92
rohc_decomp_get_sn_t get_sn
Definition: rohc_decomp_internals.h:447
size_t num_contexts_used
Definition: rohc_decomp_internals.h:159
bool(* rohc_decomp_new_context_t)(const struct rohc_decomp_ctxt *const context, void **const persist_ctxt, struct rohc_decomp_volat_ctxt *const volat_ctxt)
Definition: rohc_decomp_internals.h:349
rohc_decomp_crc_corr_t algo
Definition: rohc_decomp_internals.h:226
rohc_trace_callback2_t trace_callback
Definition: rohc_decomp_internals.h:204
rohc_decomp_state_t state
Definition: rohc_decomp_internals.h:292
Some compressor statistics.
Definition: rohc_decomp_internals.h:78
rohc_packet_t(* rohc_decomp_detect_pkt_type_t)(const struct rohc_decomp_ctxt *const context, const uint8_t *const rohc_packet, const size_t rohc_length, const size_t large_cid_len)
Definition: rohc_decomp_internals.h:358
#define ROHC_MAX_MRRU
Definition: rohc_decomp_internals.h:181
unsigned int latest_used
Definition: rohc_decomp_internals.h:295
struct rohc_decomp_ctxt ** contexts
Definition: rohc_decomp_internals.h:157
unsigned long header_compressed_size
Definition: rohc_decomp_internals.h:319
rohc_cid_t cid
Definition: rohc_decomp_internals.h:277
rohc_crc_type_t
Definition: crc.h:58
A network buffer for the ROHC library.
Definition: rohc_buf.h:102
Definition: rohc_decomp_internals.h:217
#define D_NUM_PROFILES
Definition: rohc_decomp_internals.h:43
A timestamp for the ROHC library.
Definition: rohc_time.h:51
struct rohc_decomp_ctxt * last_context
Definition: rohc_decomp_internals.h:161
rohc_mode_t target_mode
Definition: rohc_decomp_internals.h:154
unsigned long failed_no_context
Definition: rohc_decomp_internals.h:85
rohc_decomp_state_t
The ROHC decompressor states.
Definition: rohc_decomp.h:75
rohc_decomp_features_t
The different features of the ROHC decompressor.
Definition: rohc_decomp.h:296
Definition: rohc_decomp_internals.h:241
The ROHC decompression context.
Definition: rohc_decomp_internals.h:274
void(* rohc_decomp_free_context_t)(void *const persist_ctxt, const struct rohc_decomp_volat_ctxt *const volat_ctxt)
Definition: rohc_decomp_internals.h:354
size_t n
Definition: rohc_decomp_internals.h:114
const size_t msn_max_bits
Definition: rohc_decomp_internals.h:418
Definition: rohc_decomp_internals.h:223
const struct rohc_decomp_profile * profile
Definition: rohc_decomp_internals.h:283
unsigned long failed_decomp
Definition: rohc_decomp_internals.h:87
rohc_decomp_features_t features
Definition: rohc_decomp_internals.h:148
bool(* rohc_decomp_parse_pkt_t)(const struct rohc_decomp_ctxt *const context, const struct rohc_buf rohc_packet, const size_t large_cid_len, rohc_packet_t *const packet_type, struct rohc_decomp_crc *const extr_crc, void *const extr_bits, size_t *const rohc_hdr_len)
Definition: rohc_decomp_internals.h:364
ROHC medium (CID characteristics)
Definition: rohc_internal.h:146
ROHC private common definitions and routines.
size_t counter
Definition: rohc_decomp_internals.h:228
void * trace_callback_priv
Definition: rohc_decomp_internals.h:206
rohc_decomp_detect_pkt_type_t detect_pkt_type
Definition: rohc_decomp_internals.h:429
rohc_crc_type_t type
Definition: rohc_decomp_internals.h:243
bool is_duplicated
Definition: rohc_decomp_internals.h:345
unsigned long total_uncompressed_size
Definition: rohc_decomp_internals.h:313
uint32_t last_pkts_errors
Definition: rohc_decomp_internals.h:300
size_t bits_nr
Definition: rohc_decomp_internals.h:245
Definition: rohc_decomp_internals.h:120
rohc_decomp_crc_corr_t
The different correction algorithms available in case of CRC failure.
Definition: rohc_decomp_internals.h:213
The user configuration for feedback rate-limiting.
Definition: rohc_decomp_internals.h:111
unsigned long received
Definition: rohc_decomp_internals.h:81
rohc_mode_t mode
Definition: rohc_decomp_internals.h:290
unsigned long total_compressed_size
Definition: rohc_decomp_internals.h:90
rohc_profile_t
The different ROHC compression/decompression profiles.
Definition: rohc_profiles.h:70
ROHC decompression routines.
rohc_packet_t
The different types of ROHC packets.
Definition: rohc_packets.h:55
unsigned long corrected_sn_wraparounds
Definition: rohc_decomp_internals.h:98
unsigned long failed_crc
Definition: rohc_decomp_internals.h:83
rohc_decomp_free_context_t free_context
The handler used to destroy the profile-specific part of the decompression context.
Definition: rohc_decomp_internals.h:426
unsigned long nr_lost_packets
Definition: rohc_decomp_internals.h:341
rohc_decomp_decode_bits_t decode_bits
Definition: rohc_decomp_internals.h:435
void(* rohc_decomp_update_ctxt_t)(struct rohc_decomp_ctxt *const context, const void *const decoded_values, const size_t payload_len, bool *const do_change_mode)
Definition: rohc_decomp_internals.h:389
unsigned long header_last_uncompressed_size
Definition: rohc_decomp_internals.h:326
rohc_status_t(* rohc_decomp_decode_bits_t)(const struct rohc_decomp_ctxt *const context, const void *const extr_bits, const size_t payload_len, void *const decoded_values)
Definition: rohc_decomp_internals.h:373
Internal ROHC macros and functions for traces.
rohc_status_t(* rohc_decomp_build_hdrs_t)(const struct rohc_decomp *const decomp, const struct rohc_decomp_ctxt *const context, const rohc_packet_t packet_type, const struct rohc_decomp_crc *const extr_crc, const void *const decoded_values, const size_t payload_len, struct rohc_buf *const uncomp_hdrs, size_t *const uncomp_hdrs_len)
Definition: rohc_decomp_internals.h:379
size_t k
Definition: rohc_decomp_internals.h:113