From 62c0b4484c455e9ba03d04dcf8403fef17e7d22d Mon Sep 17 00:00:00 2001 From: Rohit Raj Date: Fri, 9 Apr 2021 18:44:59 +0530 Subject: [PATCH] examples/l2fwd-crypto: fix packet length while decryption There were some padding left when a packet gets decrypted. This patch removes those padding. This patch also removes the padding left after verifying auth of the packet. Fixes: e2cdfbd07c8a ("examples/l2fwd-crypto: fix port id type") Cc: stable@dpdk.org Signed-off-by: Rohit Raj Acked-by: Akhil Goyal --- examples/l2fwd-crypto/main.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c index 1016ceb841..23a398043e 100644 --- a/examples/l2fwd-crypto/main.c +++ b/examples/l2fwd-crypto/main.c @@ -616,12 +616,26 @@ l2fwd_simple_forward(struct rte_mbuf *m, uint16_t portid, struct l2fwd_crypto_options *options) { uint16_t dst_port; + uint32_t pad_len; + struct rte_ipv4_hdr *ip_hdr; + uint32_t ipdata_offset = sizeof(struct rte_ether_hdr); + ip_hdr = (struct rte_ipv4_hdr *)(rte_pktmbuf_mtod(m, char *) + + ipdata_offset); dst_port = l2fwd_dst_ports[portid]; if (options->mac_updating) l2fwd_mac_updating(m, dst_port); + if (options->auth_xform.auth.op == RTE_CRYPTO_AUTH_OP_VERIFY) + rte_pktmbuf_trim(m, options->auth_xform.auth.digest_length); + + if (options->cipher_xform.cipher.op == RTE_CRYPTO_CIPHER_OP_DECRYPT) { + pad_len = m->pkt_len - rte_be_to_cpu_16(ip_hdr->total_length) - + ipdata_offset; + rte_pktmbuf_trim(m, pad_len); + } + l2fwd_send_packet(m, dst_port); } -- 2.20.1