From 4b30ceb1b4f9174d528525059d7fd52d585f059d Mon Sep 17 00:00:00 2001
From: Matus Fabian <matfabia@cisco.com>
Date: Fri, 9 Jun 2017 02:33:30 -0700
Subject: SNAT: fix 1:1 NAT without port hairpinning TCP checksum update

Change-Id: I5077fcf3671a6116b475f87e43120efc10ecaa08
Signed-off-by: Matus Fabian <matfabia@cisco.com>
---
 src/plugins/snat/in2out.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

(limited to 'src')

diff --git a/src/plugins/snat/in2out.c b/src/plugins/snat/in2out.c
index ddde702a50c..685cdca8045 100644
--- a/src/plugins/snat/in2out.c
+++ b/src/plugins/snat/in2out.c
@@ -854,6 +854,16 @@ snat_hairpinning (snat_main_t *sm,
               udp0->checksum = 0;
             }
         }
+      else
+        {
+          if (PREDICT_TRUE(proto0 == SNAT_PROTOCOL_TCP))
+            {
+              sum0 = tcp0->checksum;
+              sum0 = ip_csum_update (sum0, old_dst_addr0, new_dst_addr0,
+                                     ip4_header_t, dst_address);
+              tcp0->checksum = ip_csum_fold(sum0);
+            }
+        }
     }
 }
 
-- 
cgit