ip: Fragmentation fixes

Type: fix

if the packet is about to be fragmented, then don't call any of the
actions that expect the rewrite to have been written.
1) don't double count packets thru the adjacency (original & fragments)
2) don't double decrement the TTL for fragments
3) return to ip4-midchain post ip-frag if that's where we started.
4) only run midchain/mcast fixups if not fragmenting (if no errors)

Change-Id: Ib2866787a42713ee5871b87b597d8f74b901044b
Signed-off-by: Neale Ranns <nranns@cisco.com>
This commit is contained in:
Neale Ranns
2019-10-30 17:34:14 +00:00
committed by Ole Trøan
parent 3ea17d54a9
commit 0b6a857d85
10 changed files with 196 additions and 126 deletions

View File

@ -101,7 +101,6 @@ class TestMTU(VppTestCase):
dst=self.pg0.remote_ip4,
ttl=254, len=576, id=0) /
p_icmp4 / p_ip4 / p_payload)
icmp4_reply[1].ttl -= 1
n = icmp4_reply.__class__(icmp4_reply)
s = bytes(icmp4_reply)
icmp4_reply = s[0:576]
@ -118,7 +117,7 @@ class TestMTU(VppTestCase):
p4 = p_ether / p_ip4 / p_payload
p4.flags = 0
p4_reply = p_ip4 / p_payload
p4_reply.ttl = 62 # check this
p4_reply.ttl = p_ip4.ttl - 1
p4_reply.flags = 0
p4_reply.id = 256
self.pg_enable_capture()