ROHC compression/decompression library
|
ROHC compression context for the uncompressed profile. More...
#include "rohc_comp_internals.h"
#include "rohc_traces.h"
#include "rohc_traces_internal.h"
#include "rohc_debug.h"
#include "schemes/cid.h"
#include "crc.h"
#include <assert.h>
Functions | |
static bool | c_uncompressed_create (struct rohc_comp_ctxt *const context, const struct net_pkt *const packet) |
Create a new Uncompressed context and initialize it thanks to the given IP packet. More... | |
static void | c_uncompressed_destroy (struct rohc_comp_ctxt *const context) |
Destroy the Uncompressed context. More... | |
static bool | c_uncompressed_check_profile (const struct rohc_comp *const comp, const struct net_pkt *const packet) |
Check if the given packet corresponds to the Uncompressed profile. More... | |
static bool | c_uncompressed_check_context (const struct rohc_comp_ctxt *const context, const struct net_pkt *const packet) |
Check if an IP packet belongs to the Uncompressed context. More... | |
static int | c_uncompressed_encode (struct rohc_comp_ctxt *const context, const struct net_pkt *const uncomp_pkt, uint8_t *const rohc_pkt, const size_t rohc_pkt_max_len, rohc_packet_t *const packet_type, size_t *const payload_offset) |
Encode an IP packet according to a pattern decided by several different factors. More... | |
static int | uncompressed_code_packet (struct rohc_comp_ctxt *const context, const struct net_pkt *const uncomp_pkt, uint8_t *const rohc_pkt, const size_t rohc_pkt_max_len, rohc_packet_t *const packet_type, size_t *const payload_offset) |
Build the ROHC packet to send. More... | |
static int | uncompressed_code_IR_packet (const struct rohc_comp_ctxt *context, const struct net_pkt *const uncomp_pkt, uint8_t *const rohc_pkt, const size_t rohc_pkt_max_len, size_t *const payload_offset) |
Build the IR packet. More... | |
static int | uncompressed_code_normal_packet (const struct rohc_comp_ctxt *context, const struct net_pkt *const uncomp_pkt, uint8_t *const rohc_pkt, const size_t rohc_pkt_max_len, size_t *const payload_offset) |
Build the Normal packet. More... | |
static bool | c_uncompressed_reinit_context (struct rohc_comp_ctxt *const context) |
Re-initialize a given context. More... | |
static bool | uncomp_feedback (struct rohc_comp_ctxt *const context, const enum rohc_feedback_type feedback_type, const uint8_t *const packet, const size_t packet_len, const uint8_t *const feedback_data, const size_t feedback_data_len) |
Update the profile when feedback is received. More... | |
static void | uncompressed_decide_state (struct rohc_comp_ctxt *const context, const ip_version ip_vers) |
Decide the state that should be used for the next packet. More... | |
Variables | |
const struct rohc_comp_profile | c_uncompressed_profile |
Define the compression part of the Uncompressed profile as described in the RFC 3095. More... | |
ROHC compression context for the uncompressed profile.
|
static |
Check if an IP packet belongs to the Uncompressed context.
This function is one of the functions that must exist in one profile for the framework to work.
context | The compression context |
packet | The packet to check |
|
static |
Check if the given packet corresponds to the Uncompressed profile.
There are no condition. If this function is called, the packet always matches the Uncompressed profile.
This function is one of the functions that must exist in one profile for the framework to work.
comp | The ROHC compressor |
packet | The packet to check |
|
static |
Create a new Uncompressed context and initialize it thanks to the given IP packet.
This function is one of the functions that must exist in one profile for the framework to work.
context | The compression context |
packet | The packet given to initialize the new context |
|
static |
Destroy the Uncompressed context.
This function is one of the functions that must exist in one profile for the framework to work.
context | The compression context |
|
static |
Encode an IP packet according to a pattern decided by several different factors.
context | The compression context |
uncomp_pkt | The uncompressed packet to encode |
rohc_pkt | OUT: The ROHC packet |
rohc_pkt_max_len | The maximum length of the ROHC packet |
packet_type | OUT: The type of ROHC packet that is created |
payload_offset | OUT: The offset for the payload in the IP packet |
|
static |
Re-initialize a given context.
This function is one of the functions that must exist in one profile for the framework to work.
context | The compression context |
|
static |
Update the profile when feedback is received.
This function is one of the functions that must exist in one profile for the framework to work.
context | The compression context |
feedback_type | The feedback type among ROHC_FEEDBACK_1 and ROHC_FEEDBACK_2 |
packet | The whole feedback packet with CID bits |
packet_len | The length of the whole feedback packet with CID bits |
feedback_data | The feedback data without the CID bits |
feedback_data_len | The length of the feedback data without the CID bits |
|
static |
Build the IR packet.
IR packet (5.10.1) 0 1 2 3 4 5 6 7 --- --- --- --- --- --- --- --- 1 : Add-CID octet : if for small CIDs and (CID != 0) +---+---+---+---+---+---+---+---+ 2 | 1 1 1 1 1 1 0 |res| +---+---+---+---+---+---+---+---+ : : 3 / 0-2 octets of CID info / 1-2 octets if for large CIDs : : +---+---+---+---+---+---+---+---+ 4 | Profile = 0 | 1 octet +---+---+---+---+---+---+---+---+ 5 | CRC | 1 octet +---+---+---+---+---+---+---+---+ : : (optional) 6 / IP packet / variable length : : --- --- --- --- --- --- --- ---
Part 6 is not managed by this function.
context | The compression context |
uncomp_pkt | The uncompressed packet to encode |
rohc_pkt | OUT: The ROHC packet |
rohc_pkt_max_len | The maximum length of the ROHC packet |
payload_offset | OUT: the offset of the payload in the buffer |
|
static |
Build the Normal packet.
Normal packet (5.10.2) 0 1 2 3 4 5 6 7 --- --- --- --- --- --- --- --- 1 : Add-CID octet : if for small CIDs and (CID != 0) +---+---+---+---+---+---+---+---+ 2 | first octet of IP packet | +---+---+---+---+---+---+---+---+ : : 3 / 0-2 octets of CID info / 1-2 octets if for large CIDs : : +---+---+---+---+---+---+---+---+ | | 4 / rest of IP packet / variable length | | +---+---+---+---+---+---+---+---+
Part 4 is not managed by this function.
context | The compression context |
uncomp_pkt | The uncompressed packet to encode |
rohc_pkt | OUT: The ROHC packet |
rohc_pkt_max_len | The maximum length of the ROHC packet |
payload_offset | OUT: the offset of the payload in the buffer |
|
static |
Build the ROHC packet to send.
context | The compression context |
uncomp_pkt | The uncompressed packet to encode |
rohc_pkt | OUT: The ROHC packet |
rohc_pkt_max_len | The maximum length of the ROHC packet |
packet_type | OUT: The type of ROHC packet that is created |
payload_offset | OUT: the offset of the payload in the buffer |
|
static |
Decide the state that should be used for the next packet.
context | The compression context |
ip_vers | The IP version of the packet among IPV4, IPV6, IP_UNKNOWN, IPV4_MALFORMED, or IPV6_MALFORMED. |
const struct rohc_comp_profile c_uncompressed_profile |
Define the compression part of the Uncompressed profile as described in the RFC 3095.