+ def validate_frag(self, p6_frag, p_ip6_expected):
+ self.assertFalse(p6_frag.haslayer(IP))
+ self.assertTrue(p6_frag.haslayer(IPv6))
+ self.assertTrue(p6_frag.haslayer(IPv6ExtHdrFragment))
+ self.assertEqual(p6_frag[IPv6].src, p_ip6_expected.src)
+ self.assertEqual(p6_frag[IPv6].dst, p_ip6_expected.dst)
+
+ def validate_frag_payload_len(self, rx, proto, payload_len_expected):
+ payload_total = 0
+ for p in rx:
+ payload_total += p[IPv6].plen
+
+ # First fragment has proto
+ payload_total -= len(proto())
+
+ # Every fragment has IPv6 fragment header
+ payload_total -= len(IPv6ExtHdrFragment()) * len(rx)
+
+ self.assertEqual(payload_total, payload_len_expected)
+