ROHC compression/decompression library
Data Structures | Macros | Enumerations
rfc6846.h File Reference

ROHC packets for the ROHCv1 IP/TCP profile defined in RFC6846. More...

#include <stdint.h>
#include "config.h"
Include dependency graph for rfc6846.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ipv4_static_t
 The IPv4 static part. More...
 
struct  ipv4_dynamic1_t
 The IPv4 dynamic part without IP-ID field. More...
 
struct  ipv4_dynamic2_t
 The IPv4 dynamic part with IP-ID field. More...
 
struct  ipv4_replicate_t
 The IPv4 replicate part. More...
 
struct  ip_opt_static_t
 
struct  ip_dest_opt_static_t
 
struct  ip_hop_opt_static_t
 
struct  ip_rout_opt_static_t
 
struct  ipv6_static1_t
 The IPv6 static part, null flow_label encoded with 1 bit. More...
 
struct  ipv6_static2_t
 The IPv6 static part, flow_label encoded with 1+20 bits. More...
 
struct  ipv6_dynamic_t
 The IPv6 dynamic part. More...
 
struct  ipv6_replicate1_t
 The IPv6 replicate part with short Flow Label. More...
 
struct  ipv6_replicate2_t
 The IPv6 replicate part with long Flow Label. More...
 
struct  tcp_static_t
 The TCP static part. More...
 
struct  tcp_dynamic_t
 The TCP dynamic part. More...
 
struct  tcp_replicate_t
 The TCP replicate part. More...
 
struct  co_common_t
 The Common compressed packet format. More...
 
struct  rnd_1_t
 The rnd_1 compressed packet format. More...
 
struct  rnd_2_t
 The rnd_2 compressed packet format. More...
 
struct  rnd_3_t
 The rnd_3 compressed packet format. More...
 
struct  rnd_4_t
 The rnd_4 compressed packet format. More...
 
struct  rnd_5_t
 The rnd_5 compressed packet format. More...
 
struct  rnd_6_t
 The rnd_6 compressed packet format. More...
 
struct  rnd_7_t
 The rnd_7 compressed packet format. More...
 
struct  rnd_8_t
 The rnd_8 compressed packet format. More...
 
struct  seq_1_t
 The seq_1 compressed packet format. More...
 
struct  seq_2_t
 The seq_2 compressed packet format. More...
 
struct  seq_3_t
 The seq_3 compressed packet format. More...
 
struct  seq_4_t
 The seq_4 compressed packet format. More...
 
struct  seq_5_t
 The seq_5 compressed packet format. More...
 
struct  seq_6_t
 The seq_6 compressed packet format. More...
 
struct  seq_7_t
 The seq_7 compressed packet format. More...
 
struct  seq_8_t
 The seq_8 compressed packet format. More...
 

Macros

#define ROHC_PACKET_TYPE_IR   0xFD
 
#define ROHC_PACKET_TYPE_IR_CR   0xfc
 
#define ROHC_PACKET_TYPE_IR_DYN   0xF8
 
#define MAX_TCP_OPTION_INDEX   15U
 The largest index that may be used to identify one TCP option. More...
 
#define ROHC_TCP_OPTS_MAX   15U
 The maximum of TCP options supported by the TCP profile. More...
 
#define TCP_INDEX_NOP   0U
 
#define TCP_INDEX_EOL   1U
 
#define TCP_INDEX_MSS   2U
 
#define TCP_INDEX_WS   3U
 
#define TCP_INDEX_TS   4U
 
#define TCP_INDEX_SACK_PERM   5U
 
#define TCP_INDEX_SACK   6U
 
#define TCP_INDEX_GENERIC7   7U
 
#define TCP_INDEX_GENERIC8   8U
 
#define TCP_INDEX_GENERIC9   9U
 
#define TCP_INDEX_GENERIC10   10U
 
#define TCP_INDEX_GENERIC11   11U
 
#define TCP_INDEX_GENERIC12   12U
 
#define TCP_INDEX_GENERIC13   13U
 
#define TCP_INDEX_GENERIC14   14U
 
#define TCP_INDEX_GENERIC15   15U
 

Enumerations

enum  { ROHC_TCP_PORT_STATIC = 0, ROHC_TCP_PORT_LSB8 = 1, ROHC_TCP_PORT_IRREGULAR = 2, ROHC_TCP_PORT_RESERVED = 3 }
 The different presence flags for port_replicate() encoding scheme. More...
 

Detailed Description

ROHC packets for the ROHCv1 IP/TCP profile defined in RFC6846.

Author
FWX rohc_.nosp@m.team.nosp@m.@dial.nosp@m.ine..nosp@m.fr
Didier Barvaux didie.nosp@m.r@ba.nosp@m.rvaux.nosp@m..org
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

Macro Definition Documentation

◆ MAX_TCP_OPTION_INDEX

#define MAX_TCP_OPTION_INDEX   15U

The largest index that may be used to identify one TCP option.

The ROHC standard defines that one TCP option is identified by an index. It also defines that index is in range [0 ; 15].

◆ ROHC_PACKET_TYPE_IR

#define ROHC_PACKET_TYPE_IR   0xFD

◆ ROHC_PACKET_TYPE_IR_CR

#define ROHC_PACKET_TYPE_IR_CR   0xfc

◆ ROHC_PACKET_TYPE_IR_DYN

#define ROHC_PACKET_TYPE_IR_DYN   0xF8

◆ ROHC_TCP_OPTS_MAX

#define ROHC_TCP_OPTS_MAX   15U

The maximum of TCP options supported by the TCP profile.

One TCP header may contain up to 40 bytes of options, so it may contain up 40 1-byte options, so the ROHC (de)compressors should expect such TCP packets. However the m field in the compressed list of TCP options (see RFC 6846, section 6.3.3 for more details) cannot be larger than 15, so restrict the number of TCP options that value. One TCP packet with more than 15 TCP options will be compressed with the IP-only profile.

See also
ROHC_TCP_OPTS_MAX_PROTO

◆ TCP_INDEX_EOL

#define TCP_INDEX_EOL   1U

◆ TCP_INDEX_GENERIC10

#define TCP_INDEX_GENERIC10   10U

◆ TCP_INDEX_GENERIC11

#define TCP_INDEX_GENERIC11   11U

◆ TCP_INDEX_GENERIC12

#define TCP_INDEX_GENERIC12   12U

◆ TCP_INDEX_GENERIC13

#define TCP_INDEX_GENERIC13   13U

◆ TCP_INDEX_GENERIC14

#define TCP_INDEX_GENERIC14   14U

◆ TCP_INDEX_GENERIC15

#define TCP_INDEX_GENERIC15   15U

◆ TCP_INDEX_GENERIC7

#define TCP_INDEX_GENERIC7   7U

◆ TCP_INDEX_GENERIC8

#define TCP_INDEX_GENERIC8   8U

◆ TCP_INDEX_GENERIC9

#define TCP_INDEX_GENERIC9   9U

◆ TCP_INDEX_MSS

#define TCP_INDEX_MSS   2U

◆ TCP_INDEX_NOP

#define TCP_INDEX_NOP   0U

◆ TCP_INDEX_SACK

#define TCP_INDEX_SACK   6U

◆ TCP_INDEX_SACK_PERM

#define TCP_INDEX_SACK_PERM   5U

◆ TCP_INDEX_TS

#define TCP_INDEX_TS   4U

◆ TCP_INDEX_WS

#define TCP_INDEX_WS   3U

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

The different presence flags for port_replicate() encoding scheme.

Enumerator
ROHC_TCP_PORT_STATIC 

port is static, so it is not transmitted

ROHC_TCP_PORT_LSB8 

port is not static and it is compressible

ROHC_TCP_PORT_IRREGULAR 

port is not static and it is not compressible

ROHC_TCP_PORT_RESERVED 

reserved value