diff options
author | Enrico Loparco (eloparco) <eloparco@cisco.com> | 2021-06-24 09:15:41 +0200 |
---|---|---|
committer | Enrico Loparco (eloparco) <eloparco@cisco.com> | 2021-06-24 09:15:41 +0200 |
commit | 229385955109b866a23c4ac2aa03d4d11044c39d (patch) | |
tree | 0591f9c2fc4144d62330337cc2b94c63dfeded54 /hicn-plugin/src/interest_hitcs_node.c | |
parent | 6ffbb5ed61733b8dbef39b1a9d437e899e9359d7 (diff) |
[HICN-708] Rebase with master
Signed-off-by: Enrico Loparco (eloparco) <eloparco@cisco.com>
Change-Id: I2122e1d61dd3b2e039972624ffbdbcb3c5610159
Diffstat (limited to 'hicn-plugin/src/interest_hitcs_node.c')
-rw-r--r-- | hicn-plugin/src/interest_hitcs_node.c | 69 |
1 files changed, 33 insertions, 36 deletions
diff --git a/hicn-plugin/src/interest_hitcs_node.c b/hicn-plugin/src/interest_hitcs_node.c index d10f15afa..0212fa5f9 100644 --- a/hicn-plugin/src/interest_hitcs_node.c +++ b/hicn-plugin/src/interest_hitcs_node.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * Copyright (c) 2017-2021 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: @@ -25,8 +25,7 @@ #include "error.h" /* packet trace format function */ -static u8 *hicn_interest_hitcs_format_trace (u8 * s, va_list * args); - +static u8 *hicn_interest_hitcs_format_trace (u8 *s, va_list *args); /* Stats string values */ static char *hicn_interest_hitcs_error_strings[] = { @@ -37,10 +36,10 @@ static char *hicn_interest_hitcs_error_strings[] = { vlib_node_registration_t hicn_interest_hitcs_node; -always_inline void drop_packet (u32 * next0); +always_inline void drop_packet (u32 *next0); always_inline void -clone_from_cs (vlib_main_t * vm, u32 * bi0_cs, vlib_buffer_t * dest, u8 isv6) +clone_from_cs (vlib_main_t *vm, u32 *bi0_cs, vlib_buffer_t *dest, u8 isv6) { /* Retrieve the buffer to clone */ vlib_buffer_t *cs_buf = vlib_get_buffer (vm, *bi0_cs); @@ -77,11 +76,14 @@ clone_from_cs (vlib_main_t * vm, u32 * bi0_cs, vlib_buffer_t * dest, u8 isv6) vlib_buffer_advance (cs_buf, buffer_advance); vlib_buffer_attach_clone (vm, dest, cs_buf); } + + /* Set fag for packet coming from CS */ + hicn_get_buffer (dest)->flags |= HICN_BUFFER_FLAGS_FROM_CS; } static uword -hicn_interest_hitcs_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, - vlib_frame_t * frame) +hicn_interest_hitcs_node_fn (vlib_main_t *vm, vlib_node_runtime_t *node, + vlib_frame_t *frame) { u32 n_left_from, *from, *to_next; hicn_interest_hitcs_next_t next_index; @@ -152,12 +154,14 @@ hicn_interest_hitcs_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, nameptr = (u8 *) (&name); pitp = hicn_pit_get_data (node0); - dpo_id_t hicn_dpo_id0 = - { dpo_vft0->hicn_dpo_get_type (), 0, 0, dpo_ctx_id0 }; + dpo_id_t hicn_dpo_id0 = { .dpoi_type = + dpo_vft0->hicn_dpo_get_type (), + .dpoi_proto = 0, + .dpoi_next_node = 0, + .dpoi_index = dpo_ctx_id0 }; - if (PREDICT_FALSE - (ret != HICN_ERROR_NONE || - !hicn_node_compare (nameptr, namelen, node0))) + if (PREDICT_FALSE (ret != HICN_ERROR_NONE || + !hicn_node_compare (nameptr, namelen, node0))) { /* Remove lock from the entry */ hicn_pcs_remove_lock (rt->pitcs, &pitp, &node0, vm, hash_entry0, @@ -176,17 +180,17 @@ hicn_interest_hitcs_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, } else { - if (PREDICT_TRUE - (!(hash_entry0->he_flags & HICN_HASH_ENTRY_FLAG_DELETED))) + if (PREDICT_TRUE ( + !(hash_entry0->he_flags & HICN_HASH_ENTRY_FLAG_DELETED))) hicn_pcs_cs_update (vm, rt->pitcs, pitp, pitp, node0); /* * Retrieve the incoming iface and forward * the data through it */ - next0 = hicnb0->face_dpo_id.dpoi_next_node; - vnet_buffer (b0)->ip.adj_index[VLIB_TX] = - hicnb0->face_dpo_id.dpoi_index; + next0 = isv6 ? HICN_INTEREST_HITCS_NEXT_IFACE6_OUT : + HICN_INTEREST_HITCS_NEXT_IFACE4_OUT; + vnet_buffer (b0)->ip.adj_index[VLIB_TX] = hicnb0->face_id; clone_from_cs (vm, &pitp->u.cs.cs_pkt_buf, b0, isv6); @@ -216,9 +220,8 @@ hicn_interest_hitcs_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, * Verify speculative enqueue, maybe switch current * next frame */ - vlib_validate_buffer_enqueue_x1 (vm, node, next_index, - to_next, n_left_to_next, - bi0, next0); + vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next, + n_left_to_next, bi0, next0); } vlib_put_next_frame (vm, node, next_index, n_left_to_next); } @@ -239,14 +242,14 @@ hicn_interest_hitcs_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, } always_inline void -drop_packet (u32 * next0) +drop_packet (u32 *next0) { *next0 = HICN_INTEREST_HITCS_NEXT_ERROR_DROP; } /* packet trace format function */ static u8 * -hicn_interest_hitcs_format_trace (u8 * s, va_list * args) +hicn_interest_hitcs_format_trace (u8 *s, va_list *args) { CLIB_UNUSED (vlib_main_t * vm) = va_arg (*args, vlib_main_t *); CLIB_UNUSED (vlib_node_t * node) = va_arg (*args, vlib_node_t *); @@ -261,28 +264,22 @@ hicn_interest_hitcs_format_trace (u8 * s, va_list * args) /* * Node registration for the interest forwarder node */ -/* *INDENT-OFF* */ -VLIB_REGISTER_NODE(hicn_interest_hitcs_node) = -{ +VLIB_REGISTER_NODE (hicn_interest_hitcs_node) = { .function = hicn_interest_hitcs_node_fn, .name = "hicn-interest-hitcs", - .vector_size = sizeof(u32), - .runtime_data_bytes = sizeof(hicn_interest_hitcs_runtime_t), + .vector_size = sizeof (u32), + .runtime_data_bytes = sizeof (hicn_interest_hitcs_runtime_t), .format_trace = hicn_interest_hitcs_format_trace, .type = VLIB_NODE_TYPE_INTERNAL, - .n_errors = ARRAY_LEN(hicn_interest_hitcs_error_strings), + .n_errors = ARRAY_LEN (hicn_interest_hitcs_error_strings), .error_strings = hicn_interest_hitcs_error_strings, .n_next_nodes = HICN_INTEREST_HITCS_N_NEXT, /* edit / add dispositions here */ - .next_nodes = - { - [HICN_INTEREST_HITCS_NEXT_STRATEGY] = "hicn-strategy", - [HICN_INTEREST_HITCS_NEXT_PUSH] = "hicn-data-push", - [HICN_INTEREST_HITCS_NEXT_ERROR_DROP] = "error-drop", - [HICN_INTEREST_HITCS_NEXT_EMPTY] = "ip6-lookup" - }, + .next_nodes = { [HICN_INTEREST_HITCS_NEXT_STRATEGY] = "hicn-strategy", + [HICN_INTEREST_HITCS_NEXT_IFACE4_OUT] = "hicn4-iface-output", + [HICN_INTEREST_HITCS_NEXT_IFACE6_OUT] = "hicn6-iface-output", + [HICN_INTEREST_HITCS_NEXT_ERROR_DROP] = "error-drop" }, }; -/* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON |