ROHC compression/decompression library
Data Structures | Functions | Variables
d_esp.c File Reference

ROHC ESP decompression profile. More...

#include "d_generic.h"
#include "d_ip.h"
#include "rohc_traces_internal.h"
#include "rohc_debug.h"
#include "rohc_utils.h"
#include "crc.h"
#include "protocols/esp.h"
#include "schemes/wlsb.h"
#include <stdint.h>
#include <string.h>
#include <assert.h>
Include dependency graph for d_esp.c:

Data Structures

struct  d_esp_context
 Define the ESP part of the decompression profile context. More...

Functions

static void * d_esp_create (const struct rohc_decomp_ctxt *const context)
 Create the ESP decompression context.
static void d_esp_destroy (void *const context)
 Destroy the context.
static int esp_parse_static_esp (const struct rohc_decomp_ctxt *const context, const unsigned char *packet, size_t length, struct rohc_extr_bits *const bits)
 Parse the ESP static part of the ROHC packet.
static int esp_parse_dynamic_esp (const struct rohc_decomp_ctxt *const context, const uint8_t *packet, const size_t length, struct rohc_extr_bits *const bits)
 Parse the ESP dynamic part of the ROHC packet.
static bool esp_decode_values_from_bits (const struct rohc_decomp_ctxt *context, const struct rohc_extr_bits bits, struct rohc_decoded_values *const decoded)
 Decode ESP values from extracted bits.
static int esp_build_uncomp_esp (const struct rohc_decomp_ctxt *const context, const struct rohc_decoded_values decoded, unsigned char *dest, const unsigned int payload_len)
 Build an uncompressed ESP header.
static void esp_update_context (const struct rohc_decomp_ctxt *context, const struct rohc_decoded_values decoded)
 Update context with decoded ESP values.

Variables

struct rohc_decomp_profile d_esp_profile
 Define the decompression part of the ESP profile as described in the RFC 3095.

Detailed Description

ROHC ESP decompression profile.

Author:
FWX <rohc_team@dialine.fr>
Didier Barvaux <didier@barvaux.org>

Function Documentation

static void * d_esp_create ( const struct rohc_decomp_ctxt *const  context) [static]

Create the ESP decompression context.

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

Parameters:
contextThe decompression context
Returns:
The newly-created ESP decompression context
static void d_esp_destroy ( void *const  context) [static]

Destroy the context.

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

Parameters:
contextThe compression context
static int esp_build_uncomp_esp ( const struct rohc_decomp_ctxt *const  context,
const struct rohc_decoded_values  decoded,
unsigned char *  dest,
const unsigned int  payload_len 
) [static]

Build an uncompressed ESP header.

Parameters:
contextThe decompression context
decodedThe values decoded from the ROHC header
destThe buffer to store the ESP header (MUST be at least of sizeof(struct esphdr) length)
payload_lenThe length of the ESP payload
Returns:
The length of the next header (ie. the ESP header), -1 in case of error
static bool esp_decode_values_from_bits ( const struct rohc_decomp_ctxt context,
const struct rohc_extr_bits  bits,
struct rohc_decoded_values *const  decoded 
) [static]

Decode ESP values from extracted bits.

The following values are decoded:

  • ESP SPI
Parameters:
contextThe decompression context
bitsThe extracted bits
decodedOUT: The corresponding decoded values
Returns:
true if decoding is successful, false otherwise
static int esp_parse_dynamic_esp ( const struct rohc_decomp_ctxt *const  context,
const uint8_t *  packet,
const size_t  length,
struct rohc_extr_bits *const  bits 
) [static]

Parse the ESP dynamic part of the ROHC packet.

Parameters:
contextThe decompression context
packetThe ROHC packet to decode
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
static int esp_parse_static_esp ( const struct rohc_decomp_ctxt *const  context,
const unsigned char *  packet,
size_t  length,
struct rohc_extr_bits *const  bits 
) [static]

Parse the ESP static part of the ROHC packet.

Parameters:
contextThe decompression context
packetThe ROHC packet to decode
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
static void esp_update_context ( const struct rohc_decomp_ctxt context,
const struct rohc_decoded_values  decoded 
) [static]

Update context with decoded ESP values.

The following decoded values are updated in context:

  • ESP SPI
Parameters:
contextThe decompression context
decodedThe decoded values to update in the context

Variable Documentation

Initial value:
{
        .id              = ROHC_PROFILE_ESP, 
        .new_context     = d_esp_create,
        .free_context    = d_esp_destroy,
        .decode          = d_generic_decode,
        .detect_pkt_type = ip_detect_packet_type,
        .get_sn          = d_generic_get_sn,
}

Define the decompression part of the ESP profile as described in the RFC 3095.