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