From: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org>

Generated outer header should have frag_offset = 0, MF = 0. Change code
accordingly.

Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org>
---
/** Email created from pull request 243 (lumag:ipsec-packet-impl-3)
 ** https://github.com/Linaro/odp/pull/243
 ** Patch: https://github.com/Linaro/odp/pull/243.patch
 ** Base sha: d22c949cc466bf28de559855a1cb525740578137
 ** Merge commit sha: c7cf7a3e9184b27986b3ddb459d86081b1fca033
 **/
 platform/linux-generic/odp_ipsec.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/platform/linux-generic/odp_ipsec.c 
b/platform/linux-generic/odp_ipsec.c
index e6fb276a6..107b54917 100644
--- a/platform/linux-generic/odp_ipsec.c
+++ b/platform/linux-generic/odp_ipsec.c
@@ -677,10 +677,10 @@ static ipsec_sa_t *ipsec_out_single(odp_packet_t pkt,
                out_ip.id = odp_atomic_fetch_add_u32(&ipsec_sa->out.tun_hdr_id,
                                                     1);
                if (ipsec_sa->copy_df)
-                       out_ip.frag_offset = ip->frag_offset;
+                       out_ip.frag_offset = ip->frag_offset & 0x4000;
                else
-                       out_ip.frag_offset = (ip->frag_offset & ~0x4000) |
-                                            (ipsec_sa->out.tun_df << 14);
+                       out_ip.frag_offset =
+                               ((uint16_t)ipsec_sa->out.tun_df) << 14;
                out_ip.ttl = ipsec_sa->out.tun_ttl;
                out_ip.proto = _ODP_IPV4;
                /* Will be filled later by packet checksum update */

Reply via email to