ROHC compression/decompression library
Functions | Variables
d_ip.c File Reference

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

#include "d_ip.h"
#include "rohc_traces.h"
#include "rohc_bit_ops.h"
#include "rohc_packets.h"
#include "rohc_debug.h"
#include "decode.h"
#include "config.h"
Include dependency graph for d_ip.c:

Functions

void * d_ip_create (void)
 Create the IP decompression context.
rohc_packet_t ip_detect_packet_type (struct rohc_decomp *decomp, struct d_context *context, const unsigned char *packet, const size_t rohc_length, const size_t large_cid_len)
 Detect the type of ROHC packet for IP-based non-RTP profiles.
int ip_parse_dynamic_ip (struct d_generic_context *context, const unsigned char *packet, unsigned int length, struct rohc_extr_bits *const bits)
 Parse the IP dynamic part of the ROHC packet.

Variables

struct d_profile d_ip_profile
 Define the decompression part of the IP-only profile as described in the RFC 3843.

Detailed Description

ROHC decompression context for the IP-only profile.

Author:
Didier Barvaux <didier.barvaux@toulouse.viveris.com>
The hackers from ROHC for Linux

Function Documentation

void* d_ip_create ( void  )

Create the IP decompression context.

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

Returns:
A fake IP decompression context

References d_generic_create(), d_generic_context::detect_packet_type, ip_detect_packet_type(), ip_parse_dynamic_ip(), d_generic_context::parse_dyn_next_hdr, rohc_debugf, rohc_lsb_new(), ROHC_LSB_SHIFT_SN, d_generic_context::sn_lsb_ctxt, and zfree.

rohc_packet_t ip_detect_packet_type ( struct rohc_decomp decomp,
struct d_context context,
const unsigned char *  packet,
const size_t  rohc_length,
const size_t  large_cid_len 
)

Detect the type of ROHC packet for IP-based non-RTP profiles.

Parameters:
decompThe ROHC decompressor
contextThe decompression context
packetThe ROHC packet
rohc_lengthThe length of the ROHC packet
large_cid_lenThe length of the optional large CID field
Returns:
The packet type

References d_is_ir(), d_is_irdyn(), d_is_uo0(), d_is_uo1(), d_is_uor2(), PACKET_IR, PACKET_IR_DYN, PACKET_UNKNOWN, PACKET_UO_0, PACKET_UO_1, PACKET_UOR_2, and rohc_debugf.

Referenced by d_ip_create(), and d_udp_create().

int ip_parse_dynamic_ip ( struct d_generic_context context,
const unsigned char *  packet,
unsigned int  length,
struct rohc_extr_bits *const  bits 
)

Parse the IP dynamic part of the ROHC packet.

Parameters:
contextThe generic decompression context
packetThe ROHC packet to parse
lengthThe length of the ROHC packet
bitsOUT: The bits extracted from the ROHC header
Returns:
The number of bytes read in the ROHC packet, -1 in case of failure

References GET_NEXT_16_BITS, PACKET_IR, PACKET_IR_DYN, d_generic_context::packet_type, rohc_debugf, rohc_extr_bits::sn, and rohc_extr_bits::sn_nr.

Referenced by d_ip_create().


Variable Documentation

Initial value:
{
        ROHC_PROFILE_IP,              
        "IP / Decompressor",          
        d_generic_decode,             
        d_ip_create,
        d_ip_destroy,
        d_generic_get_sn,
}

Define the decompression part of the IP-only profile as described in the RFC 3843.