| ROHC compression/decompression library
   
    | 
IP-agnostic packet. More...
#include "dllexport.h"#include "protocols/ipv4.h"#include "protocols/ipv6.h"#include <stdlib.h>#include <stdint.h>#include <stdbool.h>

Go to the source code of this file.
| Data Structures | |
| struct | ip_packet | 
| Defines an IP-agnostic packet that can handle an IPv4 or IPv6 packet.  More... | |
| struct | ip6_ahhdr | 
| Defines | |
| #define | IPV6_EXT_HOP_BY_HOP 0 | 
| #define | IPV6_EXT_DESTINATION 60 | 
| #define | IPV6_EXT_ROUTING 43 | 
| #define | IPV6_EXT_AUTH 51 | 
| #define | IP_GET_16_SUBFIELD(field, bitmask, offset) ((ntohs(field) & (bitmask)) >> (offset)) | 
| Get a subpart of a 16-bit IP field. | |
| #define | IP_GET_32_SUBFIELD(field, bitmask, offset) ((ntohl(field) & (bitmask)) >> (offset)) | 
| Get a subpart of a 32-bit IP field. | |
| #define | IP_SET_16_SUBFIELD(field, bitmask, offset, value) (field) = (((field) & htons(~(bitmask))) | htons(((value) << (offset)) & (bitmask))) | 
| Set a subpart of a 16-bit IP field. | |
| #define | IP_SET_32_SUBFIELD(field, bitmask, offset, value) (field) = (((field) & htonl(~(bitmask))) | htonl(((value) << (offset)) & (bitmask))) | 
| Set a subpart of a 32-bit IP field. | |
| #define | IPV4_DF_OFFSET 14 | 
| The offset for the DF flag in an ipv4_hdr->frag_off variable. | |
| #define | IPV4_GET_DF(ip4) IP_GET_16_SUBFIELD((ip4).frag_off, IP_DF, IPV4_DF_OFFSET) | 
| Get the IPv4 Don't Fragment (DF) bit from an ipv4_hdr object. | |
| #define | IPV4_SET_DF(ip4, value) IP_SET_16_SUBFIELD((ip4)->frag_off, IP_DF, IPV4_DF_OFFSET, (value)) | 
| Set the IPv4 Don't Fragment (DF) bit in an ipv4_hdr object. | |
| #define | IPV4_ADDR_FORMAT "%02x%02x%02x%02x (%u.%u.%u.%u)" | 
| The format to print an IPv4 address. | |
| #define | IPV4_ADDR_RAW(x) | 
| The data to print an IPv4 address in raw format. | |
| #define | IPV6_VERSION_MASK 0xf0000000 | 
| The bitmask for the Version field in an ipv6_hdr->ip6_flow variable. | |
| #define | IPV6_VERSION_OFFSET 28 | 
| The offset for the Version field in an ipv6_hdr->ip6_flow variable. | |
| #define | IPV6_TC_MASK 0x0ff00000 | 
| The bitmask for the Traffic Class (TC) field in an ipv6_hdr->ip6_flow variable. | |
| #define | IPV6_TC_OFFSET 20 | 
| The offset for the Traffic Class (TC) field in an ipv6_hdr->ip6_flow variable. | |
| #define | IPV6_FLOW_LABEL_MASK 0x000fffff | 
| The bitmask for the FLow Label field in an ipv6_hdr->ip6_flow variable. | |
| #define | IPV6_GET_VERSION(ip6) IP_GET_32_SUBFIELD((ip6).ip6_flow, IPV6_VERSION_MASK, IPV6_VERSION_OFFSET) | 
| Get the IPv6 Version 4-bit field from ipv6_hdr object. | |
| #define | IPV6_SET_VERSION(ip6, value) IP_SET_32_SUBFIELD((ip6)->ip6_flow, IPV6_VERSION_MASK, IPV6_VERSION_OFFSET, (value)) | 
| Set the IPv6 Version 4-bit field in an ipv6_hdr object. | |
| #define | IPV6_GET_TC(ip6) IP_GET_32_SUBFIELD((ip6).ip6_flow, IPV6_TC_MASK, IPV6_TC_OFFSET) | 
| Get the IPv6 Traffic Class (TC) byte from an ipv6_hdr object. | |
| #define | IPV6_SET_TC(ip6, value) IP_SET_32_SUBFIELD((ip6)->ip6_flow, IPV6_TC_MASK, IPV6_TC_OFFSET, (value)) | 
| Set the IPv6 Traffic Class (TC) byte in an ipv6_hdr object. | |
| #define | IPV6_GET_FLOW_LABEL(ip6) IP_GET_32_SUBFIELD((ip6).ip6_flow, IPV6_FLOW_LABEL_MASK, 0) | 
| Get the IPv6 Flow Label 20-bit field from an ipv6_hdr object. | |
| #define | IPV6_SET_FLOW_LABEL(ip6, value) IP_SET_32_SUBFIELD((ip6)->ip6_flow, IPV6_FLOW_LABEL_MASK, 0, (value)) | 
| Set the IPv6 Flow Label 20-bit field in an ipv6_hdr variable. | |
| #define | IPV6_ADDR_FORMAT "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x" | 
| The format to print an IPv6 address. | |
| #define | IPV6_ADDR_IN6(x) IPV6_ADDR_RAW((x)->s6_addr) | 
| The data to print an IPv6 address in (struct ipv6_addr *) format. | |
| #define | IPV6_ADDR_RAW(x) | 
| The data to print an IPv6 address in raw format. | |
| #define | IPV6_ADDR_CMP(x, y) | 
| Compare two IPv6 addresses in (struct ipv6_addr *) format. | |
| Enumerations | |
| enum | ip_header_pos_t { ROHC_IP_HDR_NONE = 0, ROHC_IP_HDR_FIRST = 1, ROHC_IP_HDR_SECOND = 2 } | 
| enum | ip_version { IPV4 = 4, IPV6 = 6, IP_UNKNOWN } | 
| IP version.  More... | |
| Functions | |
| int ROHC_EXPORT | ip_create (struct ip_packet *const ip, const unsigned char *packet, const unsigned int size) | 
| Create an IP packet from raw data. | |
| int ROHC_EXPORT | ip_get_inner_packet (const struct ip_packet *const outer, struct ip_packet *const inner) | 
| Get the inner IP packet (IP in IP) | |
| const unsigned char *ROHC_EXPORT | ip_get_raw_data (const struct ip_packet *const ip) | 
| Get the IP raw data (header + payload) | |
| unsigned char *ROHC_EXPORT | ip_get_next_header (const struct ip_packet *const ip, uint8_t *const type) | 
| Get the IP next header. | |
| unsigned char *ROHC_EXPORT | ip_get_next_layer (const struct ip_packet *const ip) | 
| Get the next header (but skip IP extensions) | |
| unsigned char *ROHC_EXPORT | ip_get_next_ext_from_ip (const struct ip_packet *const ip, uint8_t *const type) | 
| Get the next extension header of IPv6 packets from an IPv6 header. | |
| unsigned char *ROHC_EXPORT | ip_get_next_ext_from_ext (const unsigned char *const ext, uint8_t *const type) | 
| Get the next extension header of IPv6 packets from another extension. | |
| unsigned int ROHC_EXPORT | ip_get_totlen (const struct ip_packet *const ip) | 
| Get the total length of an IP packet. | |
| unsigned int ROHC_EXPORT | ip_get_hdrlen (const struct ip_packet *const ip) | 
| Get the length of an IP header. | |
| unsigned int ROHC_EXPORT | ip_get_plen (const struct ip_packet *const ip) | 
| Get the length of an IPv4/IPv6 payload. | |
| int ROHC_EXPORT | ip_is_fragment (const struct ip_packet *const ip) | 
| Whether the IP packet is an IP fragment or not. | |
| ip_version ROHC_EXPORT | ip_get_version (const struct ip_packet *const ip) | 
| Get the IP version of an IP packet. | |
| unsigned int ROHC_EXPORT | ip_get_protocol (const struct ip_packet *const ip) | 
| Get the protocol transported by an IP packet. | |
| unsigned int ROHC_EXPORT | ext_get_protocol (const unsigned char *const ext) | 
| Get the protocol transported by the last IPv6 extension. | |
| unsigned int ROHC_EXPORT | ip_get_tos (const struct ip_packet *const ip) | 
| Get the IPv4 Type Of Service (TOS) or IPv6 Traffic Class (TC) of an IP packet. | |
| unsigned int ROHC_EXPORT | ip_get_ttl (const struct ip_packet *const ip) | 
| Get the IPv4 Time To Live (TTL) or IPv6 Hop Limit (HL) of an IP packet. | |
| void ROHC_EXPORT | ip_set_version (struct ip_packet *const ip, const ip_version value) | 
| Set the IP version of an IP packet. | |
| void ROHC_EXPORT | ip_set_protocol (struct ip_packet *const ip, const uint8_t value) | 
| Set the protocol transported by an IP packet. | |
| void ROHC_EXPORT | ip_set_tos (struct ip_packet *const ip, const uint8_t value) | 
| Set the IPv4 Type Of Service (TOS) or IPv6 Traffic Class (TC) of an IP packet. | |
| void ROHC_EXPORT | ip_set_ttl (struct ip_packet *const ip, const uint8_t value) | 
| Set the IPv4 Time To Live (TTL) or IPv6 Hop Limit (HL) of an IP packet. | |
| void ROHC_EXPORT | ip_set_saddr (struct ip_packet *const ip, const unsigned char *value) | 
| Set the Source Address of an IP packet. | |
| void ROHC_EXPORT | ip_set_daddr (struct ip_packet *const ip, const unsigned char *value) | 
| Set the Destination Address of an IP packet. | |
| struct ipv4_hdr *ROHC_EXPORT | ipv4_get_header (const struct ip_packet *const ip) | 
| Get the IPv4 header. | |
| uint16_t ROHC_EXPORT | ipv4_get_id (const struct ip_packet *const ip) | 
| Get the IP-ID of an IPv4 packet. | |
| uint16_t ROHC_EXPORT | ipv4_get_id_nbo (const struct ip_packet *const ip, const unsigned int nbo) | 
| Get the IP-ID of an IPv4 packet in Network Byte Order. | |
| int ROHC_EXPORT | ipv4_get_df (const struct ip_packet *const ip) | 
| Get the Don't Fragment (DF) bit of an IPv4 packet. | |
| uint32_t ROHC_EXPORT | ipv4_get_saddr (const struct ip_packet *const ip) | 
| Get the source address of an IPv4 packet. | |
| uint32_t ROHC_EXPORT | ipv4_get_daddr (const struct ip_packet *const ip) | 
| Get the destination address of an IPv4 packet. | |
| void ROHC_EXPORT | ipv4_set_id (struct ip_packet *const ip, const int value) | 
| Set the IP-ID of an IPv4 packet. | |
| void ROHC_EXPORT | ipv4_set_df (struct ip_packet *const ip, const int value) | 
| Set the Don't Fragment (DF) bit of an IPv4 packet. | |
| struct ipv6_hdr *ROHC_EXPORT | ipv6_get_header (const struct ip_packet *const ip) | 
| Get the IPv6 header. | |
| uint32_t ROHC_EXPORT | ipv6_get_flow_label (const struct ip_packet *const ip) | 
| Get the flow label of an IPv6 packet. | |
| struct ipv6_addr *ROHC_EXPORT | ipv6_get_saddr (const struct ip_packet *const ip) | 
| Get the source address of an IPv6 packet. | |
| struct ipv6_addr *ROHC_EXPORT | ipv6_get_daddr (const struct ip_packet *const ip) | 
| Get the destination address of an IPv6 packet. | |
| void ROHC_EXPORT | ipv6_set_flow_label (struct ip_packet *const ip, const uint32_t value) | 
| Set the flow label of an IPv6 packet. | |
| unsigned short ROHC_EXPORT | ip_get_extension_size (const unsigned char *const ext) | 
| Get the size of an IPv6 extension. | |
| unsigned short ROHC_EXPORT | ip_get_total_extension_size (const struct ip_packet *const ip) | 
| Get the size of the extension list. | |
| int | get_ip_version (const unsigned char *const packet, const unsigned int size, ip_version *const version) | 
IP-agnostic packet.
| #define IP_GET_16_SUBFIELD | ( | field, | |
| bitmask, | |||
| offset | |||
| ) | ((ntohs(field) & (bitmask)) >> (offset)) | 
Get a subpart of a 16-bit IP field.
| #define IP_GET_32_SUBFIELD | ( | field, | |
| bitmask, | |||
| offset | |||
| ) | ((ntohl(field) & (bitmask)) >> (offset)) | 
Get a subpart of a 32-bit IP field.
| #define IP_SET_16_SUBFIELD | ( | field, | |
| bitmask, | |||
| offset, | |||
| value | |||
| ) | (field) = (((field) & htons(~(bitmask))) | htons(((value) << (offset)) & (bitmask))) | 
Set a subpart of a 16-bit IP field.
| #define IP_SET_32_SUBFIELD | ( | field, | |
| bitmask, | |||
| offset, | |||
| value | |||
| ) | (field) = (((field) & htonl(~(bitmask))) | htonl(((value) << (offset)) & (bitmask))) | 
Set a subpart of a 32-bit IP field.
| #define IPV4_ADDR_FORMAT "%02x%02x%02x%02x (%u.%u.%u.%u)" | 
The format to print an IPv4 address.
Referenced by code_ipv4_static_part().
| #define IPV4_ADDR_RAW | ( | x | ) | 
(x)[0], (x)[1], (x)[2], (x)[3], \
        (x)[0], (x)[1], (x)[2], (x)[3]
The data to print an IPv4 address in raw format.
Referenced by code_ipv4_static_part().
| #define IPV4_DF_OFFSET 14 | 
The offset for the DF flag in an ipv4_hdr->frag_off variable.
| #define IPV4_GET_DF | ( | ip4 | ) | IP_GET_16_SUBFIELD((ip4).frag_off, IP_DF, IPV4_DF_OFFSET) | 
Get the IPv4 Don't Fragment (DF) bit from an ipv4_hdr object.
Referenced by changed_dynamic_one_hdr(), and ipv4_get_df().
| #define IPV4_SET_DF | ( | ip4, | |
| value | |||
| ) | IP_SET_16_SUBFIELD((ip4)->frag_off, IP_DF, IPV4_DF_OFFSET, (value)) | 
Set the IPv4 Don't Fragment (DF) bit in an ipv4_hdr object.
Referenced by ipv4_set_df().
| #define IPV6_ADDR_CMP | ( | x, | |
| y | |||
| ) | 
((x)->s6_addr32[0] == (y)->s6_addr32[0] && \ (x)->s6_addr32[1] == (y)->s6_addr32[1] && \ (x)->s6_addr32[2] == (y)->s6_addr32[2] && \ (x)->s6_addr32[3] == (y)->s6_addr32[3])
Compare two IPv6 addresses in (struct ipv6_addr *) format.
Referenced by c_ip_check_context(), c_udp_check_context(), and c_udp_lite_check_context().
| #define IPV6_ADDR_FORMAT "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x" | 
The format to print an IPv6 address.
Referenced by code_ipv6_static_part().
| #define IPV6_ADDR_IN6 | ( | x | ) | IPV6_ADDR_RAW((x)->s6_addr) | 
The data to print an IPv6 address in (struct ipv6_addr *) format.
Referenced by code_ipv6_static_part().
| #define IPV6_ADDR_RAW | ( | x | ) | 
(x)[0], (x)[1], (x)[2], (x)[3], (x)[4], (x)[5], (x)[6], (x)[7], \
        (x)[8], (x)[9], (x)[10], (x)[11], (x)[12], (x)[13], (x)[14], (x)[15]
The data to print an IPv6 address in raw format.
| #define IPV6_EXT_AUTH 51 | 
Next header code for Authentification Header
Referenced by ext_get_protocol(), ip_get_next_ext_from_ext(), ip_get_next_ext_from_ip(), ip_get_next_layer(), and ip_get_protocol().
| #define IPV6_EXT_DESTINATION 60 | 
Next header code for Destination options
Referenced by ext_get_protocol(), ip_get_next_ext_from_ext(), ip_get_next_ext_from_ip(), ip_get_next_layer(), and ip_get_protocol().
| #define IPV6_EXT_HOP_BY_HOP 0 | 
Next header code for Hop-by-Hop options
Referenced by ext_get_protocol(), ip_get_next_ext_from_ext(), ip_get_next_ext_from_ip(), ip_get_next_layer(), and ip_get_protocol().
| #define IPV6_EXT_ROUTING 43 | 
Next header code for Routing extension
Referenced by ext_get_protocol(), ip_get_next_ext_from_ext(), ip_get_next_ext_from_ip(), ip_get_next_layer(), and ip_get_protocol().
| #define IPV6_FLOW_LABEL_MASK 0x000fffff | 
The bitmask for the FLow Label field in an ipv6_hdr->ip6_flow variable.
| #define IPV6_GET_FLOW_LABEL | ( | ip6 | ) | IP_GET_32_SUBFIELD((ip6).ip6_flow, IPV6_FLOW_LABEL_MASK, 0) | 
Get the IPv6 Flow Label 20-bit field from an ipv6_hdr object.
Referenced by c_ip_check_context(), c_udp_check_context(), c_udp_lite_check_context(), and ipv6_get_flow_label().
| #define IPV6_GET_TC | ( | ip6 | ) | IP_GET_32_SUBFIELD((ip6).ip6_flow, IPV6_TC_MASK, IPV6_TC_OFFSET) | 
Get the IPv6 Traffic Class (TC) byte from an ipv6_hdr object.
Referenced by changed_fields(), and ip_get_tos().
| #define IPV6_GET_VERSION | ( | ip6 | ) | IP_GET_32_SUBFIELD((ip6).ip6_flow, IPV6_VERSION_MASK, IPV6_VERSION_OFFSET) | 
Get the IPv6 Version 4-bit field from ipv6_hdr object.
| #define IPV6_SET_FLOW_LABEL | ( | ip6, | |
| value | |||
| ) | IP_SET_32_SUBFIELD((ip6)->ip6_flow, IPV6_FLOW_LABEL_MASK, 0, (value)) | 
Set the IPv6 Flow Label 20-bit field in an ipv6_hdr variable.
Referenced by ipv6_set_flow_label().
| #define IPV6_SET_TC | ( | ip6, | |
| value | |||
| ) | IP_SET_32_SUBFIELD((ip6)->ip6_flow, IPV6_TC_MASK, IPV6_TC_OFFSET, (value)) | 
Set the IPv6 Traffic Class (TC) byte in an ipv6_hdr object.
Referenced by ip_set_tos().
| #define IPV6_SET_VERSION | ( | ip6, | |
| value | |||
| ) | IP_SET_32_SUBFIELD((ip6)->ip6_flow, IPV6_VERSION_MASK, IPV6_VERSION_OFFSET, (value)) | 
Set the IPv6 Version 4-bit field in an ipv6_hdr object.
| #define IPV6_TC_MASK 0x0ff00000 | 
The bitmask for the Traffic Class (TC) field in an ipv6_hdr->ip6_flow variable.
| #define IPV6_TC_OFFSET 20 | 
The offset for the Traffic Class (TC) field in an ipv6_hdr->ip6_flow variable.
| #define IPV6_VERSION_MASK 0xf0000000 | 
The bitmask for the Version field in an ipv6_hdr->ip6_flow variable.
| #define IPV6_VERSION_OFFSET 28 | 
The offset for the Version field in an ipv6_hdr->ip6_flow variable.
| enum ip_header_pos_t | 
| enum ip_version | 
| unsigned int ROHC_EXPORT ext_get_protocol | ( | const unsigned char *const | ext | ) | 
Get the protocol transported by the last IPv6 extension.
| ext | The first extension | 
References ext_get_protocol(), IPV6_EXT_AUTH, IPV6_EXT_DESTINATION, IPV6_EXT_HOP_BY_HOP, and IPV6_EXT_ROUTING.
Referenced by ext_get_protocol(), and ip_get_protocol().
| int get_ip_version | ( | const unsigned char *const | packet, | 
| const unsigned int | size, | ||
| ip_version *const | version | ||
| ) | 
Private functions used by the IP module: (please do not use directly)
References IP_UNKNOWN, IPV4, and IPV6.
Referenced by compute_crc_dynamic(), compute_crc_static(), and ip_create().
| int ROHC_EXPORT ip_create | ( | struct ip_packet *const | ip, | 
| const unsigned char * | packet, | ||
| const unsigned int | size | ||
| ) | 
Create an IP packet from raw data.
| ip | OUT: The IP packet to create | 
| packet | The IP packet data | 
| size | The length of the IP packet data | 
References ip_packet::data, get_ip_version(), ip_packet::header, ip_get_hdrlen(), ip_get_totlen(), IP_UNKNOWN, IPV4, IPV6, rohc_debugf, ip_packet::size, ip_packet::v4, ip_packet::v6, version, and ip_packet::version.
Referenced by ip_get_inner_packet(), and rohc_compress().
| unsigned short ROHC_EXPORT ip_get_extension_size | ( | const unsigned char *const | ext | ) | 
Get the size of an IPv6 extension.
| ext | The extension | 
Referenced by c_init_header_info(), and ip_get_total_extension_size().
| unsigned int ROHC_EXPORT ip_get_hdrlen | ( | const struct ip_packet *const | ip | ) | 
Get the length of an IP header.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
References ip_packet::header, ipv4_hdr::ihl, IPV4, IPV6, ip_packet::v4, and ip_packet::version.
Referenced by c_generic_encode(), c_udp_lite_encode(), and ip_create().
| int ROHC_EXPORT ip_get_inner_packet | ( | const struct ip_packet *const | outer, | 
| struct ip_packet *const | inner | ||
| ) | 
Get the inner IP packet (IP in IP)
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| outer | The outer IP packet to analyze | 
| inner | The inner IP packet to create | 
References ip_create(), ip_get_next_layer(), ip_get_plen(), and rohc_debugf.
Referenced by c_generic_create(), c_generic_encode(), c_ip_check_context(), c_rtp_check_context(), c_rtp_create(), c_rtp_encode(), c_udp_check_context(), c_udp_create(), c_udp_encode(), c_udp_lite_check_context(), c_udp_lite_create(), c_udp_lite_encode(), and rohc_compress().
| unsigned char* ROHC_EXPORT ip_get_next_ext_from_ext | ( | const unsigned char *const | ext, | 
| uint8_t *const | type | ||
| ) | 
Get the next extension header of IPv6 packets from another extension.
| ext | The extension to analyse | 
| type | OUT: The type of the next header If there is no next header the value must be ignored | 
References IPV6_EXT_AUTH, IPV6_EXT_DESTINATION, IPV6_EXT_HOP_BY_HOP, and IPV6_EXT_ROUTING.
Referenced by ip_get_total_extension_size().
| unsigned char* ROHC_EXPORT ip_get_next_ext_from_ip | ( | const struct ip_packet *const | ip, | 
| uint8_t *const | type | ||
| ) | 
Get the next extension header of IPv6 packets from an IPv6 header.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
| type | OUT: The type of the next header If there is no next header the value must be ignored | 
References ip_get_next_header(), IP_UNKNOWN, IPV6, IPV6_EXT_AUTH, IPV6_EXT_DESTINATION, IPV6_EXT_HOP_BY_HOP, IPV6_EXT_ROUTING, and ip_packet::version.
Referenced by ip_get_total_extension_size().
| unsigned char* ROHC_EXPORT ip_get_next_header | ( | const struct ip_packet *const | ip, | 
| uint8_t *const | type | ||
| ) | 
Get the IP next header.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
| type | OUT: The type of the next header | 
References ip_packet::data, ip_packet::header, IPV4, IPV6, ipv4_hdr::protocol, ip_packet::v4, ip_packet::v6, and ip_packet::version.
Referenced by ip_get_next_ext_from_ip(), and ip_get_next_layer().
| unsigned char* ROHC_EXPORT ip_get_next_layer | ( | const struct ip_packet *const | ip | ) | 
Get the next header (but skip IP extensions)
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
References ip_get_next_header(), IPV6, IPV6_EXT_AUTH, IPV6_EXT_DESTINATION, IPV6_EXT_HOP_BY_HOP, IPV6_EXT_ROUTING, and ip_packet::version.
Referenced by c_generic_encode(), c_rtp_check_context(), c_rtp_create(), c_rtp_encode(), c_udp_check_context(), c_udp_create(), c_udp_encode(), c_udp_lite_check_context(), c_udp_lite_create(), c_udp_lite_encode(), ip_get_inner_packet(), and rtp_header_flags_and_fields().
| unsigned int ROHC_EXPORT ip_get_plen | ( | const struct ip_packet *const | ip | ) | 
Get the length of an IPv4/IPv6 payload.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IPv4/IPv6 packet to analyze | 
References ip_packet::header, ipv4_hdr::ihl, ip_get_total_extension_size(), IPV4, IPV6, ipv4_hdr::tot_len, ip_packet::v4, ip_packet::v6, and ip_packet::version.
Referenced by ip_get_inner_packet().
| unsigned int ROHC_EXPORT ip_get_protocol | ( | const struct ip_packet *const | ip | ) | 
Get the protocol transported by an IP packet.
The protocol returned is the one transported by the last known IP extension header if any is found.
The function handles ip_packet whose ip_packet::version is IP_UNKNOWN. It always returns the special value 0.
| ip | The IP packet to analyze | 
References ip_packet::data, ext_get_protocol(), ip_packet::header, IPV4, IPV6, IPV6_EXT_AUTH, IPV6_EXT_DESTINATION, IPV6_EXT_HOP_BY_HOP, IPV6_EXT_ROUTING, ipv4_hdr::protocol, ip_packet::v4, ip_packet::v6, and ip_packet::version.
Referenced by c_generic_create(), c_generic_encode(), c_ip_check_context(), c_rtp_check_context(), c_rtp_create(), c_rtp_encode(), c_udp_check_context(), c_udp_create(), c_udp_encode(), c_udp_lite_check_context(), c_udp_lite_create(), c_udp_lite_encode(), changed_fields(), code_ipv4_static_part(), code_ipv6_static_part(), header_fields(), and rohc_compress().
| const unsigned char* ROHC_EXPORT ip_get_raw_data | ( | const struct ip_packet *const | ip | ) | 
Get the IP raw data (header + payload)
The function handles ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
References ip_packet::data.
Referenced by code_UO0_packet(), code_UO1_packet(), code_UO2_packet(), and rohc_compress().
| unsigned int ROHC_EXPORT ip_get_tos | ( | const struct ip_packet *const | ip | ) | 
Get the IPv4 Type Of Service (TOS) or IPv6 Traffic Class (TC) of an IP packet.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
References ip_packet::header, IPV4, IPV6, IPV6_GET_TC, ipv4_hdr::tos, ip_packet::v4, ip_packet::v6, and ip_packet::version.
Referenced by changed_fields(), code_ipv4_dynamic_part(), code_ipv6_dynamic_part(), and header_fields().
| unsigned short ROHC_EXPORT ip_get_total_extension_size | ( | const struct ip_packet *const | ip | ) | 
Get the size of the extension list.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The packet to analyse | 
References ip_get_extension_size(), ip_get_next_ext_from_ext(), and ip_get_next_ext_from_ip().
Referenced by c_generic_encode(), and ip_get_plen().
| unsigned int ROHC_EXPORT ip_get_totlen | ( | const struct ip_packet *const | ip | ) | 
Get the total length of an IP packet.
The function handles ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
References ip_packet::header, IPV4, IPV6, ip_packet::size, ipv4_hdr::tot_len, ip_packet::v4, and ip_packet::version.
Referenced by ip_create(), and rohc_compress().
| unsigned int ROHC_EXPORT ip_get_ttl | ( | const struct ip_packet *const | ip | ) | 
Get the IPv4 Time To Live (TTL) or IPv6 Hop Limit (HL) of an IP packet.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
References ip_packet::header, IPV4, IPV6, ipv4_hdr::ttl, ip_packet::v4, ip_packet::v6, and ip_packet::version.
Referenced by changed_fields(), code_ipv4_dynamic_part(), code_ipv6_dynamic_part(), and header_fields().
| ip_version ROHC_EXPORT ip_get_version | ( | const struct ip_packet *const | ip | ) | 
Get the IP version of an IP packet.
The function handles ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
References ip_packet::version.
Referenced by c_generic_encode(), c_init_header_info(), c_ip_check_context(), c_udp_check_context(), c_udp_lite_check_context(), changed_dynamic_one_hdr(), changed_fields(), code_EXT3_packet(), code_generic_dynamic_part(), code_generic_static_part(), code_IR_packet(), and code_uo_remainder().
| int ROHC_EXPORT ip_is_fragment | ( | const struct ip_packet *const | ip | ) | 
Whether the IP packet is an IP fragment or not.
The IP packet is a fragment if the MF (More Fragments) bit is set or the Fragment Offset field is non-zero.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to analyze | 
References ipv4_hdr::frag_off, ip_packet::header, IP_DF, IPV4, IPV6, ip_packet::v4, and ip_packet::version.
| void ROHC_EXPORT ip_set_daddr | ( | struct ip_packet *const | ip, | 
| const unsigned char * | value | ||
| ) | 
Set the Destination Address of an IP packet.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to modify | 
| value | The IP address value | 
References ipv4_hdr::daddr, ip_packet::header, ipv6_hdr::ip6_dst, IPV4, IPV6, ip_packet::v4, ip_packet::v6, and ip_packet::version.
| void ROHC_EXPORT ip_set_protocol | ( | struct ip_packet *const | ip, | 
| const uint8_t | value | ||
| ) | 
Set the protocol transported by an IP packet.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to modify | 
| value | The protocol value | 
References ip_packet::header, IPV4, IPV6, ipv4_hdr::protocol, ip_packet::v4, ip_packet::v6, and ip_packet::version.
| void ROHC_EXPORT ip_set_saddr | ( | struct ip_packet *const | ip, | 
| const unsigned char * | value | ||
| ) | 
Set the Source Address of an IP packet.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to modify | 
| value | The IP address value | 
References ip_packet::header, ipv6_hdr::ip6_src, IPV4, IPV6, ipv4_hdr::saddr, ip_packet::v4, ip_packet::v6, and ip_packet::version.
| void ROHC_EXPORT ip_set_tos | ( | struct ip_packet *const | ip, | 
| const uint8_t | value | ||
| ) | 
Set the IPv4 Type Of Service (TOS) or IPv6 Traffic Class (TC) of an IP packet.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to modify | 
| value | The TOS/TC value | 
References ip_packet::header, IPV4, IPV6, IPV6_SET_TC, ipv4_hdr::tos, ip_packet::v4, ip_packet::v6, and ip_packet::version.
| void ROHC_EXPORT ip_set_ttl | ( | struct ip_packet *const | ip, | 
| const uint8_t | value | ||
| ) | 
Set the IPv4 Time To Live (TTL) or IPv6 Hop Limit (HL) of an IP packet.
The function does not handle ip_packet whose ip_packet::version is IP_UNKNOWN.
| ip | The IP packet to modify | 
| value | The TTL/HL value | 
References ip_packet::header, IPV4, IPV6, ipv4_hdr::ttl, ip_packet::v4, ip_packet::v6, and ip_packet::version.
| void ROHC_EXPORT ip_set_version | ( | struct ip_packet *const | ip, | 
| const ip_version | value | ||
| ) | 
Set the IP version of an IP packet.
| ip | The IP packet to modify | 
| value | The version value | 
References ip_packet::version.
| uint32_t ROHC_EXPORT ipv4_get_daddr | ( | const struct ip_packet *const | ip | ) | 
Get the destination address of an IPv4 packet.
The function does not handle ip_packet whose ip_packet::version is not IPV4.
| ip | The IPv4 packet to analyze | 
References ipv4_hdr::daddr, ip_packet::header, IPV4, ip_packet::v4, and ip_packet::version.
Referenced by c_ip_check_context(), c_udp_check_context(), c_udp_lite_check_context(), and code_ipv4_static_part().
| int ROHC_EXPORT ipv4_get_df | ( | const struct ip_packet *const | ip | ) | 
Get the Don't Fragment (DF) bit of an IPv4 packet.
The function does not handle ip_packet whose ip_packet::version is not IPV4.
| ip | The IP packet to analyze | 
References ip_packet::header, IPV4, IPV4_GET_DF, ip_packet::v4, and ip_packet::version.
Referenced by changed_dynamic_one_hdr(), code_ipv4_dynamic_part(), and header_flags().
| struct ipv4_hdr* ROHC_EXPORT ipv4_get_header | ( | const struct ip_packet *const | ip | ) |  [read] | 
Get the IPv4 header.
The function does not handle ip_packet whose ip_packet::version is not IPV4.
| ip | The IP packet to analyze | 
References ip_packet::header, IPV4, ip_packet::v4, and ip_packet::version.
Referenced by c_generic_encode().
| uint16_t ROHC_EXPORT ipv4_get_id | ( | const struct ip_packet *const | ip | ) | 
Get the IP-ID of an IPv4 packet.
The IP-ID value is returned as-is (ie. not automatically converted to the host byte order).
The function does not handle ip_packet whose ip_packet::version is not IPV4.
| ip | The IP packet to analyze | 
References IPV4, ipv4_get_id_nbo(), and ip_packet::version.
Referenced by c_generic_encode(), and code_uo_remainder().
| uint16_t ROHC_EXPORT ipv4_get_id_nbo | ( | const struct ip_packet *const | ip, | 
| const unsigned int | nbo | ||
| ) | 
Get the IP-ID of an IPv4 packet in Network Byte Order.
The function does not handle ip_packet whose ip_packet::version is not IPV4.
| ip | The IP packet to analyze | 
| nbo | The NBO flag (if RND = 1, use NBO = 1) | 
References ip_packet::header, ipv4_hdr::id, IPV4, ip_packet::v4, and ip_packet::version.
Referenced by code_ipv4_dynamic_part(), and ipv4_get_id().
| uint32_t ROHC_EXPORT ipv4_get_saddr | ( | const struct ip_packet *const | ip | ) | 
Get the source address of an IPv4 packet.
The function does not handle ip_packet whose ip_packet::version is not IPV4.
| ip | The IPv4 packet to analyze | 
References ip_packet::header, IPV4, ipv4_hdr::saddr, ip_packet::v4, and ip_packet::version.
Referenced by c_ip_check_context(), c_udp_check_context(), c_udp_lite_check_context(), and code_ipv4_static_part().
| void ROHC_EXPORT ipv4_set_df | ( | struct ip_packet *const | ip, | 
| const int | value | ||
| ) | 
Set the Don't Fragment (DF) bit of an IPv4 packet.
The function does not handle ip_packet whose ip_packet::version is not IPV4.
| ip | The IP packet to modify | 
| value | The value of the DF bit | 
References ip_packet::header, IPV4, IPV4_SET_DF, ip_packet::v4, and ip_packet::version.
| void ROHC_EXPORT ipv4_set_id | ( | struct ip_packet *const | ip, | 
| const int | value | ||
| ) | 
Set the IP-ID of an IPv4 packet.
The IP-ID value is set as-is (ie. not automatically converted to the host byte order).
The function does not handle ip_packet whose ip_packet::version is not IPV4.
| ip | The IP packet to modify | 
| value | The IP-ID value | 
References ip_packet::header, ipv4_hdr::id, IPV4, ip_packet::v4, and ip_packet::version.
| struct ipv6_addr* ROHC_EXPORT ipv6_get_daddr | ( | const struct ip_packet *const | ip | ) |  [read] | 
Get the destination address of an IPv6 packet.
The function does not handle ip_packet whose ip_packet::version is not IPV6.
| ip | The IPv6 packet to analyze | 
References ip_packet::header, ipv6_hdr::ip6_dst, IPV6, ip_packet::v6, and ip_packet::version.
Referenced by c_ip_check_context(), c_udp_check_context(), c_udp_lite_check_context(), and code_ipv6_static_part().
| uint32_t ROHC_EXPORT ipv6_get_flow_label | ( | const struct ip_packet *const | ip | ) | 
Get the flow label of an IPv6 packet.
The function does not handle ip_packet whose ip_packet::version is not IPV6.
| ip | The IPv6 packet to analyze | 
References ip_packet::header, IPV6, IPV6_GET_FLOW_LABEL, ip_packet::v6, and ip_packet::version.
Referenced by c_ip_check_context(), c_udp_check_context(), c_udp_lite_check_context(), and code_ipv6_static_part().
| struct ipv6_hdr* ROHC_EXPORT ipv6_get_header | ( | const struct ip_packet *const | ip | ) |  [read] | 
Get the IPv6 header.
The function does not handle ip_packet whose ip_packet::version is not IPV6.
| ip | The IP packet to analyze | 
References ip_packet::header, IPV6, ip_packet::v6, and ip_packet::version.
Referenced by c_generic_encode().
| struct ipv6_addr* ROHC_EXPORT ipv6_get_saddr | ( | const struct ip_packet *const | ip | ) |  [read] | 
Get the source address of an IPv6 packet.
The function does not handle ip_packet whose ip_packet::version is not IPV6.
| ip | The IPv6 packet to analyze | 
References ip_packet::header, ipv6_hdr::ip6_src, IPV6, ip_packet::v6, and ip_packet::version.
Referenced by c_ip_check_context(), c_udp_check_context(), c_udp_lite_check_context(), and code_ipv6_static_part().
| void ROHC_EXPORT ipv6_set_flow_label | ( | struct ip_packet *const | ip, | 
| const uint32_t | value | ||
| ) | 
Set the flow label of an IPv6 packet.
The function does not handle ip_packet whose ip_packet::version is not IPV6.
| ip | The IPv6 packet to modify | 
| value | The flow label value | 
References ip_packet::header, IPV6, IPV6_SET_FLOW_LABEL, ip_packet::v6, and ip_packet::version.
 1.7.6.1
 1.7.6.1