diff options
Diffstat (limited to 'test/test_vxlan6.py')
-rw-r--r-- | test/test_vxlan6.py | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/test/test_vxlan6.py b/test/test_vxlan6.py index 3a11ea91db1..d9e2d8159d1 100644 --- a/test/test_vxlan6.py +++ b/test/test_vxlan6.py @@ -6,7 +6,8 @@ from framework import VppTestCase, VppTestRunner from template_bd import BridgeDomain from scapy.layers.l2 import Ether -from scapy.layers.inet6 import IPv6, UDP +from scapy.packet import Raw +from scapy.layers.inet6 import IP, IPv6, UDP from scapy.layers.vxlan import VXLAN import util @@ -80,7 +81,8 @@ class TestVxlan6(BridgeDomain, VppTestCase): # Verify UDP destination port is VXLAN 4789, source UDP port could be # arbitrary. self.assertEqual(pkt[UDP].dport, type(self).dport) - # TODO: checksum check + # Verify UDP checksum + self.assert_udp_checksum_valid(pkt, ignore_zero_checksum=False) # Verify VNI self.assertEqual(pkt[VXLAN].vni, vni) @@ -190,6 +192,35 @@ class TestVxlan6(BridgeDomain, VppTestCase): self.logger.info(self.vapi.cli("show bridge-domain 3 detail")) self.logger.info(self.vapi.cli("show vxlan tunnel")) + def test_encap_fragmented_packet(self): + """ Encapsulation test send fragments from pg1 + Verify receipt of encapsulated frames on pg0 + """ + + frame = (Ether(src='00:00:00:00:00:02', dst='00:00:00:00:00:01') / + IP(src='4.3.2.1', dst='1.2.3.4') / + UDP(sport=20000, dport=10000) / + Raw(b'\xa5' * 1000)) + + frags = util.fragment_rfc791(frame, 400) + + self.pg1.add_stream(frags) + + self.pg0.enable_capture() + + self.pg_start() + + out = self.pg0.get_capture(3) + + payload = [] + for pkt in out: + payload.append(self.decapsulate(pkt)) + self.check_encapsulation(pkt, self.single_tunnel_vni) + + reassembled = util.reassemble4(payload) + + self.assertEqual(Ether(raw(frame))[IP], reassembled[IP]) + if __name__ == '__main__': unittest.main(testRunner=VppTestRunner) |