ip: reassembly: handle atomic fragments correctly

If a fragment arrives with fragment offset = 0 and M = 0, it means that
this is actually a complete packet and per RFC 8200, it should be
treated independently from other fragments. This patch does that.
Fragmentation header is stripped and fragment is forwarded irregardles
of other existing reassemblies in case of full reassembly and treated
the same way as regular packet in shallow virtual reassembly.

Type: improvement
Change-Id: If3322d5e3160cd755b8465a642702a9166d46cc2
Signed-off-by: Klement Sekera <ksekera@cisco.com>
This commit is contained in:
Klement Sekera
2021-12-07 09:49:53 +00:00
committed by Ole Tr�an
parent 514df6f931
commit 7c3275e84b
4 changed files with 178 additions and 48 deletions

View File

@ -1293,7 +1293,8 @@ class VppTestCase(CPUInterface, unittest.TestCase):
self.pg_enable_capture(self.pg_interfaces)
self.pg_start(trace=trace)
def send_and_assert_no_replies(self, intf, pkts, remark="", timeout=None):
def send_and_assert_no_replies(self, intf, pkts, remark="", timeout=None,
trace=True):
self.pg_send(intf, pkts)
if not timeout:
timeout = 1
@ -1301,6 +1302,8 @@ class VppTestCase(CPUInterface, unittest.TestCase):
i.get_capture(0, timeout=timeout)
i.assert_nothing_captured(remark=remark)
timeout = 0.1
if trace:
self.logger.debug(self.vapi.cli("show trace"))
def send_and_expect(self, intf, pkts, output, n_rx=None, worker=None,
trace=True):