From 5f1fe8111ce9dae9a96df83963a1c4cbbb89a25f Mon Sep 17 00:00:00 2001 From: Szymon Sliwa Date: Wed, 14 Feb 2018 13:40:01 +0100 Subject: plugins: odp: Add error checks in IPsec nodes Change-Id: I62cba4a845c91b208420f3f6b20781d75976c113 Signed-off-by: Szymon Sliwa --- src/plugins/odp/ipsec/esp_decrypt_ipsec_api.c | 30 ++++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'src/plugins/odp/ipsec/esp_decrypt_ipsec_api.c') diff --git a/src/plugins/odp/ipsec/esp_decrypt_ipsec_api.c b/src/plugins/odp/ipsec/esp_decrypt_ipsec_api.c index 5a1b2d38..8069bf55 100644 --- a/src/plugins/odp/ipsec/esp_decrypt_ipsec_api.c +++ b/src/plugins/odp/ipsec/esp_decrypt_ipsec_api.c @@ -179,6 +179,7 @@ odp_ipsec_esp_decrypt_node_fn (vlib_main_t * vm, else next0 = ESP_DECRYPT_NEXT_IP4_INPUT; + odp_ipsec_packet_result_t result; odp_packet_t pkt = odp_packet_from_vlib_buffer (i_b0); odp_packet_t out_pkt; @@ -210,6 +211,16 @@ odp_ipsec_esp_decrypt_node_fn (vlib_main_t * vm, if (!is_async) { + odp_ipsec_result (&result, out_pkt); + if (PREDICT_FALSE (result.status.all != ODP_IPSEC_OK)) + { + vlib_node_increment_counter (vm, + odp_ipsec_esp_decrypt_node.index, + ESP_DECRYPT_ERROR_DECRYPTION_FAILED, + from_frame->n_vectors); + goto trace; + } + o_b0 = vlib_buffer_from_odp_packet (out_pkt); /* add the change of the ODP data offset @@ -222,14 +233,6 @@ odp_ipsec_esp_decrypt_node_fn (vlib_main_t * vm, odp_packet_len (out_pkt) - sizeof (ethernet_header_t); vnet_buffer (o_b0)->sw_if_index[VLIB_TX] = (u32) ~ 0; - - vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next, - n_left_to_next, bi0, next0); - } - else - { - to_next -= 1; - n_left_to_next += 1; } trace: @@ -240,6 +243,17 @@ odp_ipsec_esp_decrypt_node_fn (vlib_main_t * vm, tr->crypto_alg = sa0->crypto_alg; tr->integ_alg = sa0->integ_alg; } + + if (!is_async) + { + vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next, + n_left_to_next, bi0, next0); + } + else + { + to_next -= 1; + n_left_to_next += 1; + } } vlib_put_next_frame (vm, node, next_index, n_left_to_next); } -- cgit 1.2.3-korg