rohc_list.h File Reference

Define list compression with its function. More...

#include "protocols/ipv6.h"
#include "protocols/ip_numbers.h"
#include <stdlib.h>
Include dependency graph for rohc_list.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  rohc_list
 Define a list for compression. More...
struct  rohc_list_item
 A list item. More...

Defines

#define ROHC_LIST_MAX_ITEM   16U
#define ROHC_LIST_GEN_ID_MAX   0xffU
#define ROHC_LIST_GEN_ID_ANON   (ROHC_LIST_GEN_ID_MAX + 1)
#define ROHC_LIST_GEN_ID_NONE   (ROHC_LIST_GEN_ID_MAX + 2)
#define ROHC_LIST_ITEMS_MAX   15U
#define ROHC_LIST_ITEM_DATA_MAX   2048U
 The maximum length (in bytes) of item data.

Typedefs

typedef bool(* rohc_list_item_cmp )(const struct rohc_list_item *const item, const uint8_t ext_type, const uint8_t *const ext_data, const size_t ext_len)

Enumerations

enum  ext_header_version { HBH = ROHC_IPPROTO_HOPOPTS, RTHDR = ROHC_IPPROTO_ROUTING, AH = ROHC_IPPROTO_AH, DEST = ROHC_IPPROTO_DSTOPTS }
 

Header version.

More...

Functions

void rohc_list_reset (struct rohc_list *const list)
 Reset the state of the given compressed list.
bool rohc_list_equal (const struct rohc_list *const list1, const struct rohc_list *const list2)
 Are the two given lists equal?
bool rohc_list_supersede (const struct rohc_list *const large, const struct rohc_list *const small)
 Does the first list contains the second list?
void rohc_list_item_reset (struct rohc_list_item *const list_item)
 Reset the given list item.
int rohc_list_item_update_if_changed (rohc_list_item_cmp cmp_item, struct rohc_list_item *const list_item, const uint8_t item_type, const uint8_t *const item_data, const size_t item_len)
 Update the content of the given compressed item if it changed.

Detailed Description

Define list compression with its function.

Author:
Didier Barvaux <didier@barvaux.org>

Define Documentation

#define ROHC_LIST_GEN_ID_ANON   (ROHC_LIST_GEN_ID_MAX + 1)
#define ROHC_LIST_GEN_ID_MAX   0xffU

The largest gen_id value

#define ROHC_LIST_GEN_ID_NONE   (ROHC_LIST_GEN_ID_MAX + 2)
#define ROHC_LIST_ITEM_DATA_MAX   2048U

The maximum length (in bytes) of item data.

Sized for IPv6 extension headers that may reach: (0xff + 1) * 8 = 2048 bytes

#define ROHC_LIST_ITEMS_MAX   15U

The maximum number of items in a list (required by packet formats)

#define ROHC_LIST_MAX_ITEM   16U

The maximum number of items in compressed lists


Typedef Documentation

typedef bool(* rohc_list_item_cmp)(const struct rohc_list_item *const item, const uint8_t ext_type, const uint8_t *const ext_data, const size_t ext_len)

The handler used to compare two items


Enumeration Type Documentation

Header version.

Enumerator:
HBH 

Hop by hop header

RTHDR 

Routing header

AH 

AH header

DEST 

Destination header


Function Documentation

bool rohc_list_equal ( const struct rohc_list *const   list1,
const struct rohc_list *const   list2 
)

Are the two given lists equal?

We compare only the list structure, not the list content. Two lists with the same items in the same order, but with different content, are considered equals.

Parameters:
list1 The first list to compare
list2 The other list to compare
Returns:
true if the two lists are equal, false if they aren't
void rohc_list_item_reset ( struct rohc_list_item *const   list_item  ) 

Reset the given list item.

Parameters:
list_item The item to reset
int rohc_list_item_update_if_changed ( rohc_list_item_cmp  cmp_item,
struct rohc_list_item *const   list_item,
const uint8_t  item_type,
const uint8_t *const   item_data,
const size_t  item_len 
)

Update the content of the given compressed item if it changed.

Parameters:
cmp_item The callback function to compare two items
list_item The item to update
item_type The type of the item to update
item_data The data to update item with
item_len The data length (in bytes)
Returns:
0 if the item doesn't need to be updated, 1 if the update was successful, -1 if a problem occurred
void rohc_list_reset ( struct rohc_list *const   list  ) 

Reset the state of the given compressed list.

Functions prototypes

Parameters:
list The list to reset
bool rohc_list_supersede ( const struct rohc_list *const   large,
const struct rohc_list *const   small 
)

Does the first list contains the second list?

We compare only the list structure, not the list content. A list supersedes another list if all the items of the second list are present in the first list in the same order.

Parameters:
large The large list that should supersedes the small list
small The small list that should be superseded by the large list
Returns:
true if the large list supersedes the small list

Generated on 4 Jul 2018 for ROHC compression/decompression library by  doxygen 1.6.1