ROHC compression/decompression library
Functions
c_ip.h File Reference

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

#include "c_generic.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.
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.
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.
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.
int c_ip_code_ir_remainder (const struct rohc_comp_ctxt *const context, unsigned char *const dest, const size_t dest_max_len, const size_t counter)
 Code the remainder header for the IR or IR-DYN packets.

Detailed Description

ROHC compression context for the IP-only profile.

Author:
Didier Barvaux <didier.barvaux@toulouse.viveris.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,
unsigned char *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