Handle the irregular chain of the TCP compression profile.
More...
|
int | tcp_code_irreg_chain (struct rohc_comp_ctxt *const context, const struct ip_packet *const ip, const uint8_t ip_inner_ecn, const struct tcphdr *const tcp, uint8_t *const rohc_pkt, const size_t rohc_pkt_max_len) |
| Code the irregular chain of one CO packet. More...
|
|
static int | tcp_code_irregular_ipv4_part (const struct rohc_comp_ctxt *const context, const ip_context_t *const ip_context, const struct ipv4_hdr *const ipv4, const bool is_innermost, const bool ecn_used, const uint8_t ip_inner_ecn, const bool ttl_irreg_chain_flag, uint8_t *const rohc_data, const size_t rohc_max_len) |
| Build the irregular part of the IPv4 header. More...
|
|
static int | tcp_code_irregular_ipv6_part (const struct rohc_comp_ctxt *const context, const ip_context_t *const ip_context, const struct ipv6_hdr *const ipv6, const bool is_innermost, const bool ecn_used, const uint8_t ip_inner_ecn, const bool ttl_irreg_chain_flag, uint8_t *const rohc_data, const size_t rohc_max_len) |
| Build the irregular part of the IPv6 header. More...
|
|
static int | tcp_code_irregular_ipv6_opt_part (struct rohc_comp_ctxt *const context, ip_option_context_t *const opt_ctxt, const struct ipv6_opt *const ipv6_opt, const uint8_t protocol, uint8_t *const rohc_data, const size_t rohc_max_len) |
| Build the irregular part of the IPv6 option header. More...
|
|
static int | tcp_code_irregular_tcp_part (const struct rohc_comp_ctxt *const context, const struct tcphdr *const tcp, const uint8_t ip_inner_ecn, uint8_t *const rohc_data, const size_t rohc_max_len) |
| Build the irregular part of the TCP header. More...
|
|
◆ tcp_code_irreg_chain()
int tcp_code_irreg_chain |
( |
struct rohc_comp_ctxt *const |
context, |
|
|
const struct ip_packet *const |
ip, |
|
|
const uint8_t |
ip_inner_ecn, |
|
|
const struct tcphdr *const |
tcp, |
|
|
uint8_t *const |
rohc_pkt, |
|
|
const size_t |
rohc_pkt_max_len |
|
) |
| |
Code the irregular chain of one CO packet.
- Parameters
-
context | The compression context |
ip | The outer IP header |
ip_inner_ecn | The ECN flags of the innermost IP header |
tcp | The uncompressed TCP header |
rohc_pkt | OUT: The ROHC packet |
rohc_pkt_max_len | The maximum length of the ROHC packet |
- Returns
- The length of the ROHC packet if successful, -1 otherwise
◆ tcp_code_irregular_ipv4_part()
static int tcp_code_irregular_ipv4_part |
( |
const struct rohc_comp_ctxt *const |
context, |
|
|
const ip_context_t *const |
ip_context, |
|
|
const struct ipv4_hdr *const |
ipv4, |
|
|
const bool |
is_innermost, |
|
|
const bool |
ecn_used, |
|
|
const uint8_t |
ip_inner_ecn, |
|
|
const bool |
ttl_irreg_chain_flag, |
|
|
uint8_t *const |
rohc_data, |
|
|
const size_t |
rohc_max_len |
|
) |
| |
|
static |
Build the irregular part of the IPv4 header.
See RFC 4996 page 63
- Parameters
-
| context | The compression context |
| ip_context | The specific IP compression context |
| ipv4 | The IPv4 header |
| is_innermost | True if IP header is the innermost of the packet |
| ecn_used | The indicator of ECN usage |
| ip_inner_ecn | The ECN flags of the IP innermost header |
| ttl_irreg_chain_flag | Whether the TTL of an outer header changed |
[out] | rohc_data | The ROHC packet being built |
| rohc_max_len | The max remaining length in the ROHC buffer |
- Returns
- The length appended in the ROHC buffer if positive, -1 in case of error
◆ tcp_code_irregular_ipv6_opt_part()
static int tcp_code_irregular_ipv6_opt_part |
( |
struct rohc_comp_ctxt *const |
context, |
|
|
ip_option_context_t *const |
opt_ctxt, |
|
|
const struct ipv6_opt *const |
ipv6_opt, |
|
|
const uint8_t |
protocol, |
|
|
uint8_t *const |
rohc_data, |
|
|
const size_t |
rohc_max_len |
|
) |
| |
|
static |
Build the irregular part of the IPv6 option header.
- Parameters
-
| context | The compression context |
| opt_ctxt | The compression context of the IPv6 option |
| ipv6_opt | The IPv6 extension header |
| protocol | The protocol of the IPv6 extension header |
[out] | rohc_data | The ROHC packet being built |
| rohc_max_len | The max remaining length in the ROHC buffer |
- Returns
- The length appended in the ROHC buffer if positive, -1 in case of error
◆ tcp_code_irregular_ipv6_part()
static int tcp_code_irregular_ipv6_part |
( |
const struct rohc_comp_ctxt *const |
context, |
|
|
const ip_context_t *const |
ip_context, |
|
|
const struct ipv6_hdr *const |
ipv6, |
|
|
const bool |
is_innermost, |
|
|
const bool |
ecn_used, |
|
|
const uint8_t |
ip_inner_ecn, |
|
|
const bool |
ttl_irreg_chain_flag, |
|
|
uint8_t *const |
rohc_data, |
|
|
const size_t |
rohc_max_len |
|
) |
| |
|
static |
Build the irregular part of the IPv6 header.
See RFC 4996 page 63
- Parameters
-
| context | The compression context |
| ip_context | The specific IP compression context |
| ipv6 | The IPv6 header |
| is_innermost | True if IP header is the innermost of the packet |
| ecn_used | The indicator of ECN usage |
| ip_inner_ecn | The ECN flags of the IP innermost header |
| ttl_irreg_chain_flag | Whether the TTL of an outer header changed |
[out] | rohc_data | The ROHC packet being built |
| rohc_max_len | The max remaining length in the ROHC buffer |
- Returns
- The length appended in the ROHC buffer if positive, -1 in case of error
◆ tcp_code_irregular_tcp_part()
static int tcp_code_irregular_tcp_part |
( |
const struct rohc_comp_ctxt *const |
context, |
|
|
const struct tcphdr *const |
tcp, |
|
|
const uint8_t |
ip_inner_ecn, |
|
|
uint8_t *const |
rohc_data, |
|
|
const size_t |
rohc_max_len |
|
) |
| |
|
static |
Build the irregular part of the TCP header.
- Parameters
-
| context | The compression context |
| tcp | The TCP header |
| ip_inner_ecn | The ECN flags of the innermost IP header |
[out] | rohc_data | The ROHC packet being built |
| rohc_max_len | The max remaining length in the ROHC buffer |
- Returns
- The length appended in the ROHC buffer if positive, -1 in case of error