#include <vnet/ipsec/ipsec.h>
#include <vnet/ipsec/esp.h>
#include <vnet/udp/udp.h>
+#include <dpdk/buffer.h>
#include <dpdk/ipsec/ipsec.h>
#include <dpdk/device/dpdk.h>
#include <dpdk/device/dpdk_priv.h>
#undef _
};
-vlib_node_registration_t dpdk_esp4_encrypt_node;
-vlib_node_registration_t dpdk_esp6_encrypt_node;
+extern vlib_node_registration_t dpdk_esp4_encrypt_node;
+extern vlib_node_registration_t dpdk_esp6_encrypt_node;
typedef struct
{
/* The extra pad bytes would be overwritten by the digest */
if (pad_bytes)
- clib_memcpy (padding, pad_data, 16);
+ clib_memcpy_fast (padding, pad_data, 16);
f0 = (esp_footer_t *) (padding + pad_bytes);
f0->pad_length = pad_bytes;
}
}
- vnet_buffer (b0)->sw_if_index[VLIB_RX] =
- vnet_buffer (b0)->sw_if_index[VLIB_RX];
b0->flags |= VLIB_BUFFER_TOTAL_LENGTH_VALID;
/* mbuf packet starts at ESP header */
u8 *p = vlib_buffer_get_current (b0);
if (!sa0->is_tunnel)
p += vnet_buffer (b0)->ip.save_rewrite_length;
- clib_memcpy (tr->packet_data, p, sizeof (tr->packet_data));
+ clib_memcpy_fast (tr->packet_data, p, sizeof (tr->packet_data));
}
}
vlib_put_next_frame (vm, node, next_index, n_left_to_next);
ESP_ENCRYPT_ERROR_RX_PKTS,
from_frame->n_vectors);
- crypto_enqueue_ops (vm, cwm, 1, dpdk_esp6_encrypt_node.index,
+ crypto_enqueue_ops (vm, cwm, dpdk_esp6_encrypt_node.index,
ESP_ENCRYPT_ERROR_ENQ_FAIL, numa);
}
else
ESP_ENCRYPT_ERROR_RX_PKTS,
from_frame->n_vectors);
- crypto_enqueue_ops (vm, cwm, 1, dpdk_esp4_encrypt_node.index,
+ crypto_enqueue_ops (vm, cwm, dpdk_esp4_encrypt_node.index,
ESP_ENCRYPT_ERROR_ENQ_FAIL, numa);
}
return from_frame->n_vectors;
}
-static uword
-dpdk_esp4_encrypt_node_fn (vlib_main_t * vm,
- vlib_node_runtime_t * node,
- vlib_frame_t * from_frame)
+VLIB_NODE_FN (dpdk_esp4_encrypt_node) (vlib_main_t * vm,
+ vlib_node_runtime_t * node,
+ vlib_frame_t * from_frame)
{
return dpdk_esp_encrypt_inline (vm, node, from_frame, 0 /*is_ip6 */ );
}
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (dpdk_esp4_encrypt_node) = {
- .function = dpdk_esp4_encrypt_node_fn,
.name = "dpdk-esp4-encrypt",
.flags = VLIB_NODE_FLAG_IS_OUTPUT,
.vector_size = sizeof (u32),
};
/* *INDENT-ON* */
-VLIB_NODE_FUNCTION_MULTIARCH (dpdk_esp4_encrypt_node,
- dpdk_esp4_encrypt_node_fn);
-
-static uword
-dpdk_esp6_encrypt_node_fn (vlib_main_t * vm,
- vlib_node_runtime_t * node,
- vlib_frame_t * from_frame)
+VLIB_NODE_FN (dpdk_esp6_encrypt_node) (vlib_main_t * vm,
+ vlib_node_runtime_t * node,
+ vlib_frame_t * from_frame)
{
return dpdk_esp_encrypt_inline (vm, node, from_frame, 1 /*is_ip6 */ );
}
/* *INDENT-OFF* */
VLIB_REGISTER_NODE (dpdk_esp6_encrypt_node) = {
- .function = dpdk_esp6_encrypt_node_fn,
.name = "dpdk-esp6-encrypt",
.flags = VLIB_NODE_FLAG_IS_OUTPUT,
.vector_size = sizeof (u32),
};
/* *INDENT-ON* */
-VLIB_NODE_FUNCTION_MULTIARCH (dpdk_esp6_encrypt_node,
- dpdk_esp6_encrypt_node_fn);
/*
* fd.io coding-style-patch-verification: ON
*