summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2020-02-24 12:54:31 +0000
committerDave Barach <openvpp@barachs.net>2020-02-25 16:05:26 +0000
commit5cd31ec9405d2bb2fbc8152a08c4cfb64f2a8e73 (patch)
treef63022fd69c97cd4106da5c9bb5a9badc28334f6 /src
parent7a3a8664bbc9e295d6382949d2d0bcd1998a05f1 (diff)
feature: provide a u16 version of vnet_feature_next
Type: improvement when using vlib_buffer_enqueue_to_next the 'nexts' parameter is an array of u16, but vnet_feautre_next takes a u32. this is a simple wrapper to address the impedence mismatch. Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: I0fa86629e979e313344eb68442dc35a7b9537a8f
Diffstat (limited to 'src')
-rw-r--r--src/plugins/acl/dataplane_node.c5
-rw-r--r--src/vnet/feature/feature.h8
-rw-r--r--src/vnet/ipsec/esp_encrypt.c4
3 files changed, 11 insertions, 6 deletions
diff --git a/src/plugins/acl/dataplane_node.c b/src/plugins/acl/dataplane_node.c
index c738f664571..5034f945d0e 100644
--- a/src/plugins/acl/dataplane_node.c
+++ b/src/plugins/acl/dataplane_node.c
@@ -778,11 +778,10 @@ acl_fa_inner_node_fn (vlib_main_t * vm,
}
{
- u32 next0;
/* speculatively get the next0 */
- vnet_feature_next (&next0, b[0]);
+ vnet_feature_next_u16 (&next[0], b[0]);
/* if the action is not deny - then use that next */
- next[0] = action ? next0 : 0;
+ next[0] = action ? next[0] : 0;
}
if (node_trace_on) // PREDICT_FALSE (node->flags & VLIB_NODE_FLAG_TRACE))
diff --git a/src/vnet/feature/feature.h b/src/vnet/feature/feature.h
index cbea6590942..cd016735aca 100644
--- a/src/vnet/feature/feature.h
+++ b/src/vnet/feature/feature.h
@@ -304,6 +304,14 @@ vnet_feature_next (u32 * next0, vlib_buffer_t * b0)
vnet_feature_next_with_data (next0, b0, 0);
}
+static_always_inline void
+vnet_feature_next_u16 (u16 * next0, vlib_buffer_t * b0)
+{
+ u32 next32;
+ vnet_feature_next_with_data (&next32, b0, 0);
+ *next0 = next32;
+}
+
static_always_inline int
vnet_device_input_have_features (u32 sw_if_index)
{
diff --git a/src/vnet/ipsec/esp_encrypt.c b/src/vnet/ipsec/esp_encrypt.c
index 7df537a5555..e06babd92ef 100644
--- a/src/vnet/ipsec/esp_encrypt.c
+++ b/src/vnet/ipsec/esp_encrypt.c
@@ -320,10 +320,8 @@ esp_encrypt_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
if (is_tun)
{
/* we are on a ipsec tunnel's feature arc */
- u32 next0 = 0;
config_index = b[0]->current_config_index;
- vnet_feature_next (&next0, b[0]);
- next[0] = next0;
+ vnet_feature_next_u16 (&next[0], b[0]);
vnet_buffer (b[0])->ipsec.sad_index =
sa_index0 = ipsec_tun_protect_get_sa_out
(vnet_buffer (b[0])->ip.adj_index[VLIB_TX]);