On 14/10/2017 14:28, avia...@dev.mellanox.co.il wrote:
From: Aviad Yehezkel <avia...@mellanox.com>

IP length was incorrect causing corrupted ICMP packets for example

Signed-off-by: Aviad Yehezkel <avia...@mellanox.com>
---
  examples/ipsec-secgw/esp.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/examples/ipsec-secgw/esp.c b/examples/ipsec-secgw/esp.c
index 81ebf55..12c6f8c 100644
--- a/examples/ipsec-secgw/esp.c
+++ b/examples/ipsec-secgw/esp.c
@@ -205,13 +205,13 @@ esp_inbound_post(struct rte_mbuf *m, struct ipsec_sa *sa,
                if (likely(ip->ip_v == IPVERSION)) {
                        memmove(ip4, ip, ip->ip_hl * 4);
                        ip4->ip_p = *nexthdr;
-                       ip4->ip_len = htons(rte_pktmbuf_data_len(m));
+                       ip4->ip_len = htons(rte_pktmbuf_pkt_len(m));
                } else {
                        ip6 = (struct ip6_hdr *)ip4;
                        /* XXX No option headers supported */
                        memmove(ip6, ip, sizeof(struct ip6_hdr));
                        ip6->ip6_nxt = *nexthdr;
-                       ip6->ip6_plen = htons(rte_pktmbuf_data_len(m));
+                       ip6->ip6_plen = htons(rte_pktmbuf_pkt_len(m));
                }
        } else
                ipip_inbound(m, sizeof(struct esp_hdr) + sa->iv_len);

AFAIK the app does not support multi-segments (chain mbufs), so data_len should be the same as pkt_len.
Is that not the case?

Thanks,
Sergio

Reply via email to