ROHC compression/decompression library
Functions
c_ip.h File Reference

ROHC compression context for the IP-only profile. More...

#include "rohc_comp_rfc3095.h"
Include dependency graph for c_ip.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

bool c_ip_check_context (const struct rohc_comp_ctxt *const context, const struct net_pkt *const packet)
 Check if an IP packet belongs to the context. More...
 
rohc_packet_t c_ip_decide_FO_packet (const struct rohc_comp_ctxt *context)
 Decide which packet to send when in First Order (FO) state. More...
 
rohc_packet_t c_ip_decide_SO_packet (const struct rohc_comp_ctxt *context)
 Decide which packet to send when in Second Order (SO) state. More...
 
uint32_t c_ip_get_next_sn (const struct rohc_comp_ctxt *const context, const struct net_pkt *const uncomp_pkt)
 Determine the SN value for the next packet. More...
 
int c_ip_code_ir_remainder (const struct rohc_comp_ctxt *const context, uint8_t *const dest, const size_t dest_max_len, const size_t counter)
 Code the remainder header for the IR or IR-DYN packets. More...
 

Detailed Description

ROHC compression context for the IP-only profile.

Author
Didier Barvaux didie.nosp@m.r.ba.nosp@m.rvaux.nosp@m.@tou.nosp@m.louse.nosp@m..viv.nosp@m.eris..nosp@m.com

Function Documentation

bool c_ip_check_context ( const struct rohc_comp_ctxt *const  context,
const struct net_pkt *const  packet 
)

Check if an IP packet belongs to the context.

Conditions are:

  • the number of IP headers must be the same as in context
  • IP version of the two IP headers must be the same as in context
  • IP packets must not be fragmented
  • the source and destination addresses of the two IP headers must match the ones in the context
  • IPv6 only: the Flow Label of the two IP headers must match the ones in the context
  • the transport protocol must match the one in the context

This function is one of the functions that must exist in one profile for the framework to work.

Parameters
contextThe compression context
packetThe IP packet to check
Returns
true if the IP packet belongs to the context false if it does not belong to the context
int c_ip_code_ir_remainder ( const struct rohc_comp_ctxt *const  context,
uint8_t *const  dest,
const size_t  dest_max_len,
const size_t  counter 
)

Code the remainder header for the IR or IR-DYN packets.

 Remainder of IR/IR-DYN packet (5.7.7.1):

      0   1   2   3   4   5   6   7
    +---+---+---+---+---+---+---+---+
 1  |             SN                |  2 octets if not RTP
    +---+---+---+---+---+---+---+---+
Parameters
contextThe compression context
destThe ROHC packet being coded
dest_max_lenThe maximum length (in bytes) of the ROHC packet
counterThe current position in the ROHC buffer
Returns
The new position in ROHC buffer in case of success, -1 in case of failure
rohc_packet_t c_ip_decide_FO_packet ( const struct rohc_comp_ctxt context)

Decide which packet to send when in First Order (FO) state.

Packets that can be used are the IR-DYN and UO-2 packets.

See also
decide_packet
Parameters
contextThe compression context
Returns
The packet type among ROHC_PACKET_IR_DYN and ROHC_PACKET_UOR_2
rohc_packet_t c_ip_decide_SO_packet ( const struct rohc_comp_ctxt context)

Decide which packet to send when in Second Order (SO) state.

Packets that can be used are the UO-0, UO-1 and UO-2 (with or without extensions) packets.

See also
decide_packet
Parameters
contextThe compression context
Returns
The packet type among ROHC_PACKET_UO_0, ROHC_PACKET_UO_1 and ROHC_PACKET_UOR_2
uint32_t c_ip_get_next_sn ( const struct rohc_comp_ctxt *const  context,
const struct net_pkt *const  uncomp_pkt 
)

Determine the SN value for the next packet.

Profile SN is an internal increasing 16-bit number.

Parameters
contextThe compression context
uncomp_pktThe uncompressed packet to encode
Returns
The SN