X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fipsec%2Fipsec.c;h=fdd18c2f8fa7ad158bd2d8ff2263d42d7359c0b2;hb=refs%2Fchanges%2F89%2F16589%2F2;hp=a88164b6b0fc2b81debb121593a3a07c70ba5445;hpb=057b3565a09b62c9415a44a99f43ad891d864ca5;p=vpp.git diff --git a/src/vnet/ipsec/ipsec.c b/src/vnet/ipsec/ipsec.c index a88164b6b0f..fdd18c2f8fa 100644 --- a/src/vnet/ipsec/ipsec.c +++ b/src/vnet/ipsec/ipsec.c @@ -569,16 +569,21 @@ clib_error_t * ipsec_check_support_cb (ipsec_main_t * im, ipsec_sa_t * sa) { clib_error_t *error = 0; - ipsec_ah_backend_t *ah = - pool_elt_at_index (im->ah_backends, im->ah_current_backend); - ASSERT (ah->check_support_cb); - error = ah->check_support_cb (sa); - if (error) - return error; - ipsec_esp_backend_t *esp = - pool_elt_at_index (im->esp_backends, im->esp_current_backend); - ASSERT (esp->check_support_cb); - error = esp->check_support_cb (sa); + + if (PREDICT_FALSE (sa->protocol == IPSEC_PROTOCOL_AH)) + { + ipsec_ah_backend_t *ah = + pool_elt_at_index (im->ah_backends, im->ah_current_backend); + ASSERT (ah->check_support_cb); + error = ah->check_support_cb (sa); + } + else + { + ipsec_esp_backend_t *esp = + pool_elt_at_index (im->esp_backends, im->esp_current_backend); + ASSERT (esp->check_support_cb); + error = esp->check_support_cb (sa); + } return error; }