From b15ad95124ca97dd9a800394b93f1fe19567d2e1 Mon Sep 17 00:00:00 2001 From: Jon Loeliger Date: Thu, 14 Nov 2019 16:44:40 -0600 Subject: map: Fix TCP MSS clamping for MAP-E traffic. Original MSS clamp patch by Vladimir Ratnikov. Modified to apply only to TCP packets. Type: fix Test: Wrote new unit test to ensure MAP-E TCP MSS clamping. Change-Id: I77c69714a2e3cc3b7473aa12b645243bb595c2a2 Signed-off-by: Vladimir Ratnikov Signed-off-by: Jon Loeliger --- src/plugins/map/ip4_map.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/plugins/map/ip4_map.c') diff --git a/src/plugins/map/ip4_map.c b/src/plugins/map/ip4_map.c index f2a00907a57..68c3d73094c 100644 --- a/src/plugins/map/ip4_map.c +++ b/src/plugins/map/ip4_map.c @@ -209,6 +209,20 @@ ip4_map (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) */ port0 = ip4_map_port_and_security_check (d0, p0, &error0); + /* + * Clamp TCP MSS value. + */ + if (ip40->protocol == IP_PROTOCOL_TCP) + { + tcp_header_t *tcp = ip4_next_header (ip40); + if (mm->tcp_mss > 0 && tcp_syn (tcp)) + { + ip_csum_t csum = tcp->checksum; + map_mss_clamping (tcp, &csum, mm->tcp_mss); + tcp->checksum = ip_csum_fold (csum); + } + } + /* Decrement IPv4 TTL */ ip4_map_decrement_ttl (ip40, &error0); bool df0 = -- cgit 1.2.3-korg