virtio: fix the out of order descriptors in tx
[vpp.git] / src / plugins / ikev2 / ikev2.c
index db68135..2dd0819 100644 (file)
@@ -1373,14 +1373,14 @@ ikev2_sa_auth (ikev2_sa_t * sa)
           }
       }
 
-    if (sel_p)
-      sa->udp_encap = sel_p->udp_encap;
-
     vec_free(auth);
     vec_free(psk);
   }));
   /* *INDENT-ON* */
 
+  if (sel_p)
+    sa->udp_encap = sel_p->udp_encap;
+
   vec_free (authmsg);
 
   if (sa->state == IKEV2_STATE_AUTHENTICATED)
@@ -2754,24 +2754,27 @@ ikev2_set_initiator_proposals (vlib_main_t * vm, ikev2_sa_t * sa,
       return r;
     }
 
-  /* Integrity */
-  error = 1;
-  vec_foreach (td, km->supported_transforms)
-  {
-    if (td->type == IKEV2_TRANSFORM_TYPE_INTEG
-       && td->integ_type == ts->integ_alg)
+  if (IKEV2_TRANSFORM_ENCR_TYPE_AES_GCM_16 != ts->crypto_alg)
+    {
+      /* Integrity */
+      error = 1;
+      vec_foreach (td, km->supported_transforms)
       {
-       vec_add1 (proposal->transforms, *td);
-       error = 0;
-       break;
+       if (td->type == IKEV2_TRANSFORM_TYPE_INTEG
+           && td->integ_type == ts->integ_alg)
+         {
+           vec_add1 (proposal->transforms, *td);
+           error = 0;
+           break;
+         }
       }
-  }
-  if (error)
-    {
-      ikev2_elog_error
-       ("Didn't find any supported algorithm for IKEV2_TRANSFORM_TYPE_INTEG");
-      r = clib_error_return (0, "Unsupported algorithm");
-      return r;
+      if (error)
+       {
+         ikev2_elog_error
+           ("Didn't find any supported algorithm for IKEV2_TRANSFORM_TYPE_INTEG");
+         r = clib_error_return (0, "Unsupported algorithm");
+         return r;
+       }
     }
 
   /* PRF */
@@ -3593,7 +3596,8 @@ ikev2_init (vlib_main_t * vm)
 
   mhash_init_vec_string (&km->profile_index_by_name, sizeof (uword));
 
-  vec_validate (km->per_thread_data, tm->n_vlib_mains - 1);
+  vec_validate_aligned (km->per_thread_data, tm->n_vlib_mains - 1,
+                       CLIB_CACHE_LINE_BYTES);
   for (thread_id = 0; thread_id < tm->n_vlib_mains - 1; thread_id++)
     {
       km->per_thread_data[thread_id].sa_by_rspi =