Re: [vpp-dev] NAT44 does not work with fragmented ICMP packets

2020-05-26 Thread Klement Sekera via lists.fd.io
a -X (ksekera - PANTHEON TECH SRO at Cisco) > > Sent: Tuesday, May 26, 2020 12:14 PM > To: Miklós Tirpák > Cc: vpp-dev@lists.fd.io > Subject: Re: [vpp-dev] NAT44 does not work with fragmented ICMP packets > > CAUTION: This email originated from outside of the organization

Re: [vpp-dev] NAT44 does not work with fragmented ICMP packets

2020-05-26 Thread Miklos Tirpak
dev@lists.fd.io Subject: Re: [vpp-dev] NAT44 does not work with fragmented ICMP packets CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe. I think it’s enough if inst

Re: [vpp-dev] NAT44 does not work with fragmented ICMP packets

2020-05-26 Thread Klement Sekera via lists.fd.io
I think it’s enough if instead of vlib_buffer_get_current(b0) we just use ip0 (that already takes save_rewrite_length into consideration). Can you please test with this modification? Thanks, Klement > On 26 May 2020, at 11:51, Miklos Tirpak wrote: > > Hi, > > I think there is a problem in

Re: [vpp-dev] NAT44 does not work with fragmented ICMP packets

2020-05-26 Thread Miklos Tirpak
rewrite length is not considered. Thanks, Miklos From: Klement Sekera -X (ksekera - PANTHEON TECH SRO at Cisco) Sent: Tuesday, May 26, 2020 11:22 AM To: Miklós Tirpák Cc: vpp-dev@lists.fd.io Subject: Re: [vpp-dev] NAT44 does not work with fragmented ICMP p

Re: [vpp-dev] NAT44 does not work with fragmented ICMP packets

2020-05-26 Thread Miklos Tirpak
Hi, I think there is a problem in ip4_sv_reass_inline(), it does not consider ip.save_rewrite_length when it calculates is_non_first_fragment at line 619 (master): vnet_buffer (b0)->ip.reass.is_non_first_fragment = ! !ip4_get_fragment_offset

Re: [vpp-dev] NAT44 does not work with fragmented ICMP packets

2020-05-26 Thread Klement Sekera via lists.fd.io
Hi Miklos, thanks for your message. If is_non_first_fragment is set to true then rewrite will not happen. Can you take a look at what happens in ip4_sv_reass_inline for the first packet/fragment? Setting that flag should be pretty fool-proof 498 const u32 fragment_first =