aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-plugin/src/faces/app
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-plugin/src/faces/app')
-rw-r--r--hicn-plugin/src/faces/app/face_prod.c3
-rw-r--r--hicn-plugin/src/faces/app/face_prod_node.c26
2 files changed, 15 insertions, 14 deletions
diff --git a/hicn-plugin/src/faces/app/face_prod.c b/hicn-plugin/src/faces/app/face_prod.c
index 1e569b82b..73e2a1262 100644
--- a/hicn-plugin/src/faces/app/face_prod.c
+++ b/hicn-plugin/src/faces/app/face_prod.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Cisco and/or its affiliates.
+ * Copyright (c) 2021-2022 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
@@ -285,6 +285,7 @@ hicn_face_prod_add (fib_prefix_t *prefix, u32 sw_if, u32 *cs_reserved,
}
face = hicn_face_get (&local_app_ip, sw_if, &hicn_face_hashtb, adj_index);
+ assert (face);
*faceid = hicn_dpoi_get_index (face);
diff --git a/hicn-plugin/src/faces/app/face_prod_node.c b/hicn-plugin/src/faces/app/face_prod_node.c
index 8adb7dce7..93e80d1ac 100644
--- a/hicn-plugin/src/faces/app/face_prod_node.c
+++ b/hicn-plugin/src/faces/app/face_prod_node.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021 Cisco and/or its affiliates.
+ * Copyright (c) 2021-2022 Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
@@ -100,16 +100,16 @@ match_ip6_name (u8 *name, const fib_prefix_t *prefix)
}
static_always_inline u32
-hicn_face_prod_next_from_data_hdr (vlib_buffer_t *b)
+hicn_face_prod_next_from_data_hdr (vlib_main_t *vm, vlib_buffer_t *b)
{
u8 is_v6;
int match_res = 1;
int ret = 0;
- hicn_name_t *name;
+ hicn_name_t name;
hicn_face_prod_state_t *prod_face = NULL;
// 1 - ensure the packet is hicn and its format is correct
- ret = hicn_data_parse_pkt (b);
+ ret = hicn_data_parse_pkt (b, vlib_buffer_length_in_chain (vm, b));
if (PREDICT_FALSE (ret))
{
return HICN_FACE_PROD_NEXT_ERROR_DROP;
@@ -124,14 +124,14 @@ hicn_face_prod_next_from_data_hdr (vlib_buffer_t *b)
// of this face
const fib_prefix_t *prefix = &prod_face->prefix;
is_v6 = hicn_buffer_is_v6 (b);
- name = &hicn_get_buffer (b)->name;
+ hicn_packet_get_name (&hicn_get_buffer (b)->pkbuf, &name);
if (PREDICT_TRUE (!is_v6 && ip46_address_is_ip4 (&prefix->fp_addr)))
{
- match_res = match_ip4_name (&name->prefix.ip4.as_u32, prefix);
+ match_res = match_ip4_name (&name.prefix.v4.as_u32, prefix);
}
else if (PREDICT_TRUE (is_v6 && !ip46_address_is_ip4 (&prefix->fp_addr)))
{
- match_res = match_ip6_name (name->prefix.ip6.as_u8, prefix);
+ match_res = match_ip6_name (name.prefix.v6.as_u8, prefix);
}
// 4 - if match found, forward data to next hicn node
@@ -230,10 +230,10 @@ hicn_face_prod_input_node_fn (vlib_main_t *vm, vlib_node_runtime_t *node,
hicnb3->flags = HICN_FACE_FLAGS_DEFAULT;
// parse packets and get next node
- next0 = hicn_face_prod_next_from_data_hdr (b0);
- next1 = hicn_face_prod_next_from_data_hdr (b1);
- next2 = hicn_face_prod_next_from_data_hdr (b2);
- next3 = hicn_face_prod_next_from_data_hdr (b3);
+ next0 = hicn_face_prod_next_from_data_hdr (vm, b0);
+ next1 = hicn_face_prod_next_from_data_hdr (vm, b1);
+ next2 = hicn_face_prod_next_from_data_hdr (vm, b2);
+ next3 = hicn_face_prod_next_from_data_hdr (vm, b3);
stats.pkts_data_count += 4;
// counters
@@ -304,7 +304,7 @@ hicn_face_prod_input_node_fn (vlib_main_t *vm, vlib_node_runtime_t *node,
hicnb0 = hicn_get_buffer (b0);
hicnb0->flags = HICN_FACE_FLAGS_DEFAULT;
- next0 = hicn_face_prod_next_from_data_hdr (b0);
+ next0 = hicn_face_prod_next_from_data_hdr (vm, b0);
stats.pkts_data_count++;
// counters
@@ -357,4 +357,4 @@ VLIB_REGISTER_NODE(hicn_face_prod_input_node) =
* fd.io coding-style-patch-verification: ON
*
* Local Variables: eval: (c-set-style "gnu") End:
- */ \ No newline at end of file
+ */