|
Hybrid ICN (hICN) plugin
v21.06-rc0-4-g18fa668
|
Base hICN definitions. More...
#include "common.h"#include <netinet/in.h>

Go to the source code of this file.
Classes | |
| union | hicn_type_t |
| hICN packet format type More... | |
Macros | |
| #define | HICN_DEFAULT_TTL 254 |
| #define | HICN_MAX_LIFETIME_SCALED 0xFFFF |
| #define | HICN_MAX_LIFETIME_MULTIPLIER 0x0F /* 4 bits */ |
| #define | HICN_MAX_LIFETIME HICN_MAX_LIFETIME_SCALED << HICN_MAX_LIFETIME_MULTIPLIER |
| #define | HICN_TYPE(x, y, z, t) (hicn_type_t) {{ .l1 = x, .l2 = y, .l3 = z, .l4 = t }} |
| #define | HICN_TYPE_IPV4_TCP HICN_TYPE(IPPROTO_IP, IPPROTO_TCP, IPPROTO_NONE, IPPROTO_NONE) |
| #define | HICN_TYPE_IPV4_ICMP HICN_TYPE(IPPROTO_IP, IPPROTO_ICMP, IPPROTO_NONE, IPPROTO_NONE) |
| #define | HICN_TYPE_IPV6_TCP HICN_TYPE(IPPROTO_IPV6, IPPROTO_TCP, IPPROTO_NONE, IPPROTO_NONE) |
| #define | HICN_TYPE_IPV6_ICMP HICN_TYPE(IPPROTO_IPV6, IPPROTO_ICMPV6, IPPROTO_NONE, IPPROTO_NONE) |
| #define | HICN_TYPE_IPV4_TCP_AH HICN_TYPE(IPPROTO_IP, IPPROTO_TCP, IPPROTO_AH, IPPROTO_NONE) |
| #define | HICN_TYPE_IPV4_ICMP_AH HICN_TYPE(IPPROTO_IP, IPPROTO_ICMP, IPPROTO_AH, IPPROTO_NONE) |
| #define | HICN_TYPE_IPV6_TCP_AH HICN_TYPE(IPPROTO_IPV6, IPPROTO_TCP, IPPROTO_AH, IPPROTO_NONE) |
| #define | HICN_TYPE_IPV6_ICMP_AH HICN_TYPE(IPPROTO_IPV6, IPPROTO_ICMPV6, IPPROTO_AH, IPPROTO_NONE) |
| #define | HICN_TYPE_NONE HICN_TYPE(IPPROTO_NONE, IPPROTO_NONE, IPPROTO_NONE, IPPROTO_NONE) |
| #define | HICN_PATH_LABEL_MASK 0x000000ff |
| Path label computations. More... | |
| #define | HICN_PATH_LABEL_SIZE 8 |
Typedefs | |
| typedef u32 | hicn_faceid_t |
| typedef u8 | hicn_pathlabel_t |
| typedef u32 | hicn_lifetime_t |
Enumerations | |
| enum | hicn_payload_type_t { HPT_DATA = 0, HPT_MANIFEST = 1, HPT_UNSPEC = 999, HPT_DATA = 0, HPT_MANIFEST = 1, HPT_UNSPEC = 999 } |
| hICN Payload type More... | |
Functions | |
| always_inline int | hicn_type_is_none (hicn_type_t type) |
| Check if type is none. More... | |
| always_inline void | update_pathlabel (hicn_pathlabel_t current_label, hicn_faceid_t face_id, hicn_pathlabel_t *new_label) |
| Path label update. More... | |
Base hICN definitions.
Protocol-independent packet operations.
| #define HICN_PATH_LABEL_MASK 0x000000ff |
Path label computations.
Path label is computed by accumulating the identifiers of successive output faces as a Data packet is traveling from its producer back to the consumer originating the Interest.
NOTE: this computation is not (yet) part of the hICN specification.
| enum hicn_payload_type_t |
hICN Payload type
This type distinguishes several types of data packet, which can either carry content data, or Manifest
| always_inline int hicn_type_is_none | ( | hicn_type_t | type | ) |
Check if type is none.
| always_inline void update_pathlabel | ( | hicn_pathlabel_t | current_label, |
| hicn_faceid_t | face_id, | ||
| hicn_pathlabel_t * | new_label | ||
| ) |
Path label update.
| [in] | current_label | Current pathlabel |
| [in] | face_id | The face identifier to combine into the path label |
| [out] | new_label | Computed pathlabel |
This function updates the current_label based on the new face_id, and returns
1.8.17