X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fipsec%2Fesp_encrypt.c;h=e319a9628f47924576c5d0ec55c6dbbfab1275ee;hb=47feb1146ec3b0e1cf2ebd83cd5211e1df261194;hp=bb1effda68b9a32592d9670a3b0e489efc55d453;hpb=21ada3bd7e9bc5cca7c2c8399adcbaa044bf8103;p=vpp.git diff --git a/src/vnet/ipsec/esp_encrypt.c b/src/vnet/ipsec/esp_encrypt.c index bb1effda68b..e319a9628f4 100644 --- a/src/vnet/ipsec/esp_encrypt.c +++ b/src/vnet/ipsec/esp_encrypt.c @@ -436,6 +436,21 @@ esp_encrypt_inline (vlib_main_t * vm, vlib_node_runtime_t * node, op->len = payload_len - icv_sz; op->flags = VNET_CRYPTO_OP_FLAG_INIT_IV; op->user_data = b - bufs; + op->salt = sa0->salt; + + if (ipsec_sa_is_set_IS_AEAD (sa0)) + { + /* + * construct the AAD in a scratch space in front + * of the IP header. + */ + op->aad = payload - hdr_len - sizeof (esp_aead_t); + + esp_aad_fill (op, esp, sa0); + + op->tag = payload + op->len; + op->tag_len = 16; + } } if (sa0->integ_op_id) @@ -453,7 +468,7 @@ esp_encrypt_inline (vlib_main_t * vm, vlib_node_runtime_t * node, if (ipsec_sa_is_set_USE_ESN (sa0)) { u32 seq_hi = clib_net_to_host_u32 (sa0->seq_hi); - clib_memcpy_fast (op->dst, &seq_hi, sizeof (seq_hi)); + clib_memcpy_fast (op->digest, &seq_hi, sizeof (seq_hi)); op->len += sizeof (seq_hi); } }