session: optimize ct fifo segment allocations
[vpp.git] / test / test_vxlan_gpe.py
index 5622a03..c5d6bf0 100644 (file)
@@ -1,16 +1,19 @@
 #!/usr/bin/env python3
 
 import socket
-from util import ip4n_range, ip4_range
+from util import ip4_range
 import unittest
 from framework import VppTestCase, VppTestRunner, running_extended_tests
 from template_bd import BridgeDomain
 
-from scapy.layers.l2 import Ether, Raw
+from scapy.layers.l2 import Ether
+from scapy.packet import Raw
 from scapy.layers.inet import IP, UDP
 from scapy.layers.vxlan import VXLAN
-from scapy.utils import atol
+
+import util
 from vpp_ip_route import VppIpRoute, VppRoutePath
+
 from vpp_ip import INVALID_INDEX
 
 
@@ -77,6 +80,8 @@ class TestVxlanGpe(BridgeDomain, VppTestCase):
         # Verify UDP destination port is VXLAN-GPE 4790, source UDP port
         #  could be arbitrary.
         self.assertEqual(pkt[UDP].dport, type(self).dport)
+        # Verify UDP checksum
+        self.assert_udp_checksum_valid(pkt)
         # Verify VNI
         self.assertEqual(pkt[VXLAN].vni, vni)
 
@@ -94,11 +99,10 @@ class TestVxlanGpe(BridgeDomain, VppTestCase):
                                            INVALID_INDEX)],
                              register=False)
             rip.add_vpp_config()
-            dest_ip4n = socket.inet_pton(socket.AF_INET, dest_ip4)
 
             r = cls.vapi.vxlan_gpe_add_del_tunnel(
-                src_addr=cls.pg0.local_ip4n,
-                dst_addr=dest_ip4n,
+                src_addr=cls.pg0.local_ip4,
+                dst_addr=dest_ip4,
                 vni=vni)
             cls.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=r.sw_if_index,
                                                 bd_id=vni)
@@ -114,8 +118,8 @@ class TestVxlanGpe(BridgeDomain, VppTestCase):
         vni_end = vni_start + n_shared_dst_tunnels
         for vni in range(vni_start, vni_end):
             r = cls.vapi.vxlan_gpe_add_del_tunnel(
-                src_addr=cls.pg0.local_ip4n,
-                dst_addr=cls.mcast_ip4n,
+                local=cls.pg0.local_ip4,
+                remote=cls.mcast_ip4,
                 mcast_sw_if_index=1,
                 vni=vni,
                 is_add=is_add)
@@ -138,12 +142,12 @@ class TestVxlanGpe(BridgeDomain, VppTestCase):
         n_distinct_dst_tunnels = 20
         ip_range_start = 10
         ip_range_end = ip_range_start + n_distinct_dst_tunnels
-        for dest_ip4n in ip4n_range(cls.mcast_ip4n, ip_range_start,
-                                    ip_range_end):
-            vni = bytearray(dest_ip4n)[3]
+        for dest_ip4 in ip4_range(cls.mcast_ip4, ip_range_start,
+                                  ip_range_end):
+            vni = int(dest_ip4.split(".")[3])
             cls.vapi.vxlan_gpe_add_del_tunnel(
-                src_addr=cls.pg0.local_ip4n,
-                dst_addr=dest_ip4n,
+                src_addr=cls.pg0.local_ip4,
+                dst_addr=dest_ip4,
                 mcast_sw_if_index=1,
                 vni=vni,
                 is_add=is_add)
@@ -182,18 +186,16 @@ class TestVxlanGpe(BridgeDomain, VppTestCase):
 
             # Our Multicast address
             cls.mcast_ip4 = '239.1.1.1'
-            cls.mcast_ip4n = socket.inet_pton(socket.AF_INET, cls.mcast_ip4)
-            iplong = atol(cls.mcast_ip4)
-            cls.mcast_mac = "01:00:5e:%02x:%02x:%02x" % (
-                (iplong >> 16) & 0x7F, (iplong >> 8) & 0xFF, iplong & 0xFF)
+            cls.mcast_mac = util.mcast_ip_to_mac(cls.mcast_ip4)
 
             # Create VXLAN-GPE VTEP on VPP pg0, and put vxlan_gpe_tunnel0
             # and pg1 into BD.
+            cls.single_tunnel_vni = 0xabcde
             cls.single_tunnel_bd = 11
             r = cls.vapi.vxlan_gpe_add_del_tunnel(
-                src_addr=cls.pg0.local_ip4n,
-                dst_addr=cls.pg0.remote_ip4n,
-                vni=cls.single_tunnel_bd)
+                src_addr=cls.pg0.local_ip4,
+                dst_addr=cls.pg0.remote_ip4,
+                vni=cls.single_tunnel_vni)
             cls.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=r.sw_if_index,
                                                 bd_id=cls.single_tunnel_bd)
             cls.vapi.sw_interface_set_l2_bridge(
@@ -205,8 +207,8 @@ class TestVxlanGpe(BridgeDomain, VppTestCase):
             cls.create_vxlan_gpe_flood_test_bd(cls.mcast_flood_bd,
                                                cls.n_ucast_tunnels)
             r = cls.vapi.vxlan_gpe_add_del_tunnel(
-                src_addr=cls.pg0.local_ip4n,
-                dst_addr=cls.mcast_ip4n,
+                src_addr=cls.pg0.local_ip4,
+                dst_addr=cls.mcast_ip4,
                 mcast_sw_if_index=1,
                 vni=cls.mcast_flood_bd)
             cls.vapi.sw_interface_set_l2_bridge(rx_sw_if_index=r.sw_if_index,