35 #define HFO_INET 1 << 0
36 #define HFO_INET6 1 << 1
37 #define HFO_TCP 1 << 2
38 #define HFO_ICMP 1 << 3
41 #define _is_ipv4(format) ((format & HFO_INET))
42 #define _is_ipv6(format) ((format & HFO_INET6) >> 1)
43 #define _is_tcp(format) ((format & HFO_TCP) >> 2)
44 #define _is_icmp(format) ((format & HFO_ICMP) >> 3)
45 #define _is_ah(format) ((format & HFO_AH) >> 4)
50 HF_INET_TCP = HFO_INET | HFO_TCP,
51 HF_INET6_TCP = HFO_INET6 | HFO_TCP,
52 HF_INET_ICMP = HFO_INET | HFO_ICMP,
53 HF_INET6_ICMP = HFO_INET6 | HFO_ICMP,
54 HF_INET_TCP_AH = HFO_INET | HFO_TCP | HFO_AH,
55 HF_INET6_TCP_AH = HFO_INET6 | HFO_TCP | HFO_AH,
56 HF_INET_ICMP_AH = HFO_INET | HFO_ICMP | HFO_AH,
57 HF_INET6_ICMP_AH = HFO_INET6 | HFO_ICMP | HFO_AH,
66 #define HICN_V6_MIN_HDR_LEN 6
67 #define HICN_V4_MIN_HDR_LEN 4
71 #define HICN_MIN_HDR_LEN HICN_V6_MIN_HDR_LEN
89 hicn_format_t *format);
128 size_t *header_length);
139 size_t *header_length);
150 size_t *payload_length);
161 const size_t payload_length);
209 const u8 *payload, u16 payload_length);
226 u8 **payload,
size_t *payload_size,
283 uint64_t signature_timestamp);
294 uint64_t *signature_timestamp);
305 uint8_t validation_algorithm);
316 uint8_t *validation_algorithm);
336 uint8_t **key_id, uint8_t *key_id_length);
354 int hicn_packet_copy_header (hicn_format_t format,
const hicn_header_t *packet,
357 int hicn_packet_get_lifetime (
const hicn_header_t *packet, u32 *lifetime);
358 int hicn_packet_set_lifetime (
hicn_header_t *packet, u32 lifetime);
359 int hicn_packet_get_reserved_bits (
const hicn_header_t *packet,
362 const u8 reserved_bits);
363 int hicn_packet_get_payload_type (
const hicn_header_t *packet,
368 int hicn_packet_set_syn (hicn_format_t format,
hicn_header_t *packet);
369 int hicn_packet_reset_syn (hicn_format_t format,
hicn_header_t *packet);
370 int hicn_packet_test_syn (hicn_format_t format,
const hicn_header_t *packet,
372 int hicn_packet_set_ack (hicn_format_t format,
hicn_header_t *packet);
373 int hicn_packet_reset_ack (hicn_format_t format,
hicn_header_t *packet);
374 int hicn_packet_test_ack (hicn_format_t format,
const hicn_header_t *packet,
376 int hicn_packet_set_rst (hicn_format_t format,
hicn_header_t *packet);
377 int hicn_packet_reset_rst (hicn_format_t format,
hicn_header_t *packet);
378 int hicn_packet_test_rst (hicn_format_t format,
const hicn_header_t *packet,
380 int hicn_packet_set_fin (hicn_format_t format,
hicn_header_t *packet);
381 int hicn_packet_reset_fin (hicn_format_t format,
hicn_header_t *packet);
382 int hicn_packet_test_fin (hicn_format_t format,
const hicn_header_t *packet,
384 int hicn_packet_set_ece (hicn_format_t format,
hicn_header_t *packet);
385 int hicn_packet_reset_ece (hicn_format_t format,
hicn_header_t *packet);
386 int hicn_packet_test_ece (hicn_format_t format,
const hicn_header_t *packet,
389 int hicn_packet_set_src_port (hicn_format_t format,
hicn_header_t *packet,
391 int hicn_packet_get_src_port (hicn_format_t format,
393 int hicn_packet_set_dst_port (hicn_format_t format,
hicn_header_t *packet,
395 int hicn_packet_get_dst_port (hicn_format_t format,
397 int hicn_packet_get_signature (hicn_format_t format,
hicn_header_t *packet,
401 int hicn_interest_get_name (hicn_format_t format,
403 int hicn_interest_set_name (hicn_format_t format,
hicn_header_t *interest,
405 int hicn_interest_get_locator (hicn_format_t format,
408 int hicn_interest_set_locator (hicn_format_t format,
hicn_header_t *interest,
412 int hicn_interest_set_lifetime (
hicn_header_t *interest, u32 lifetime);
413 int hicn_interest_get_lifetime (
const hicn_header_t *interest, u32 *lifetime);
414 int hicn_interest_get_header_length (hicn_format_t format,
416 size_t *header_length);
417 int hicn_interest_get_payload_length (hicn_format_t format,
419 size_t *payload_length);
420 int hicn_interest_set_payload (hicn_format_t format,
hicn_header_t *interest,
421 const u8 *payload,
size_t payload_length);
422 int hicn_interest_get_payload (hicn_format_t format,
424 size_t *payload_size,
bool hard_copy);
425 int hicn_interest_reset_for_hash (hicn_format_t format,
hicn_header_t *packet);
429 int hicn_data_get_name (hicn_format_t format,
const hicn_header_t *data,
431 int hicn_data_set_name (hicn_format_t format,
hicn_header_t *data,
433 int hicn_data_get_locator (hicn_format_t format,
const hicn_header_t *data,
435 int hicn_data_set_locator (hicn_format_t format,
hicn_header_t *data,
439 int hicn_data_get_expiry_time (
const hicn_header_t *data, u32 *expiry_time);
440 int hicn_data_set_expiry_time (
hicn_header_t *data, u32 expiry_time);
441 int hicn_data_get_header_length (hicn_format_t format,
hicn_header_t *data,
442 size_t *header_length);
443 int hicn_data_get_payload_length (hicn_format_t format,
445 size_t *payload_length);
446 int hicn_data_get_path_label (
const hicn_header_t *data, u32 *path_label);
447 int hicn_data_set_path_label (
hicn_header_t *data, u32 path_label);
448 int hicn_data_get_payload (hicn_format_t format,
const hicn_header_t *data,
449 u8 **payload,
size_t *payload_size,
bool hard_copy);
450 int hicn_data_set_payload (hicn_format_t format,
hicn_header_t *data,
451 const u8 *payload,
size_t payload_length);
456 int hicn_data_reset_for_hash (hicn_format_t format,
hicn_header_t *packet);
457 int hicn_packet_get_signature_gap (hicn_format_t format,
459 int hicn_packet_set_signature_gap (hicn_format_t format,
hicn_header_t *h,