+always_inline void
+esp_aad_fill (vnet_crypto_op_t * op,
+ const esp_header_t * esp, const ipsec_sa_t * sa)
+{
+ esp_aead_t *aad;
+
+ aad = (esp_aead_t *) op->aad;
+ clib_memcpy_fast (aad, esp, 8);
+
+ if (ipsec_sa_is_set_USE_ESN (sa))
+ {
+ /* SPI, seq-hi, seq-low */
+ aad->data[2] = aad->data[1];
+ aad->data[1] = clib_host_to_net_u32 (sa->seq_hi);
+ op->aad_len = 12;
+ }
+ else
+ /* SPI, seq-low */
+ op->aad_len = 8;
+}