fib: fib api updates
[vpp.git] / test / test_srv6.py
index 2ea9da7..b3e6972 100644 (file)
@@ -5,10 +5,11 @@ import binascii
 from socket import AF_INET6
 
 from framework import VppTestCase, VppTestRunner
-from vpp_ip_route import VppIpRoute, VppRoutePath, DpoProto, VppIpTable
+from vpp_ip_route import VppIpRoute, VppRoutePath, FibPathProto, VppIpTable
 from vpp_srv6 import SRv6LocalSIDBehaviors, VppSRv6LocalSID, VppSRv6Policy, \
     SRv6PolicyType, VppSRv6Steering, SRv6PolicySteeringTypes
 
+import scapy.compat
 from scapy.packet import Raw
 from scapy.layers.l2 import Ether, Dot1Q
 from scapy.layers.inet6 import IPv6, UDP, IPv6ExtHdrSegmentRouting
@@ -23,8 +24,12 @@ class TestSRv6(VppTestCase):
     """ SRv6 Test Case """
 
     @classmethod
-    def setUpClass(self):
-        super(TestSRv6, self).setUpClass()
+    def setUpClass(cls):
+        super(TestSRv6, cls).setUpClass()
+
+    @classmethod
+    def tearDownClass(cls):
+        super(TestSRv6, cls).tearDownClass()
 
     def setUp(self):
         """ Perform test setup before each test case.
@@ -141,9 +146,7 @@ class TestSRv6(VppTestCase):
         # configure FIB entries
         route = VppIpRoute(self, "a4::", 64,
                            [VppRoutePath(self.pg1.remote_ip6,
-                                         self.pg1.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6)],
-                           is_ip6=1)
+                                         self.pg1.sw_if_index)])
         route.add_vpp_config()
 
         # configure encaps IPv6 source address
@@ -243,9 +246,7 @@ class TestSRv6(VppTestCase):
         # configure FIB entries
         route = VppIpRoute(self, "a4::", 64,
                            [VppRoutePath(self.pg1.remote_ip6,
-                                         self.pg1.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6)],
-                           is_ip6=1)
+                                         self.pg1.sw_if_index)])
         route.add_vpp_config()
 
         # configure encaps IPv6 source address
@@ -336,9 +337,7 @@ class TestSRv6(VppTestCase):
         # configure FIB entries
         route = VppIpRoute(self, "a4::", 64,
                            [VppRoutePath(self.pg1.remote_ip6,
-                                         self.pg1.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6)],
-                           is_ip6=1)
+                                         self.pg1.sw_if_index)])
         route.add_vpp_config()
 
         # configure encaps IPv6 source address
@@ -420,9 +419,7 @@ class TestSRv6(VppTestCase):
         # configure FIB entries
         route = VppIpRoute(self, "a4::", 64,
                            [VppRoutePath(self.pg1.remote_ip6,
-                                         self.pg1.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6)],
-                           is_ip6=1)
+                                         self.pg1.sw_if_index)])
         route.add_vpp_config()
 
         # configure encaps IPv6 source address
@@ -507,9 +504,7 @@ class TestSRv6(VppTestCase):
         # configure FIB entries
         route = VppIpRoute(self, "a4::", 64,
                            [VppRoutePath(self.pg1.remote_ip6,
-                                         self.pg1.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6)],
-                           is_ip6=1)
+                                         self.pg1.sw_if_index)])
         route.add_vpp_config()
 
         # configure SRv6 localSID End without PSP behavior
@@ -579,9 +574,7 @@ class TestSRv6(VppTestCase):
         # configure FIB entries
         route = VppIpRoute(self, "a4::", 64,
                            [VppRoutePath(self.pg1.remote_ip6,
-                                         self.pg1.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6)],
-                           is_ip6=1)
+                                         self.pg1.sw_if_index)])
         route.add_vpp_config()
 
         # configure SRv6 localSID End with PSP behavior
@@ -650,12 +643,9 @@ class TestSRv6(VppTestCase):
         # a4::/64 via pg1 and pg2
         route = VppIpRoute(self, "a4::", 64,
                            [VppRoutePath(self.pg1.remote_ip6,
-                                         self.pg1.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6),
+                                         self.pg1.sw_if_index),
                             VppRoutePath(self.pg2.remote_ip6,
-                                         self.pg2.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6)],
-                           is_ip6=1)
+                                         self.pg2.sw_if_index)])
         route.add_vpp_config()
         self.logger.debug(self.vapi.cli("show ip6 fib"))
 
@@ -729,13 +719,11 @@ class TestSRv6(VppTestCase):
         # configure FIB entries
         # a4::/64 via pg1 and pg2
         route = VppIpRoute(self, "a4::", 64,
-                           [VppRoutePath(self.pg1.remote_ip6,
-                                         self.pg1.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6),
+                           [VppRoutePath(
+                               self.pg1.remote_ip6,
+                               self.pg1.sw_if_index),
                             VppRoutePath(self.pg2.remote_ip6,
-                                         self.pg2.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6)],
-                           is_ip6=1)
+                                         self.pg2.sw_if_index)])
         route.add_vpp_config()
 
         # configure SRv6 localSID End with PSP behavior
@@ -875,18 +863,14 @@ class TestSRv6(VppTestCase):
         route0 = VppIpRoute(self, "a4::", 64,
                             [VppRoutePath(self.pg1.remote_ip6,
                                           self.pg1.sw_if_index,
-                                          proto=DpoProto.DPO_PROTO_IP6,
                                           nh_table_id=0)],
-                            table_id=0,
-                            is_ip6=1)
+                            table_id=0)
         route0.add_vpp_config()
         route1 = VppIpRoute(self, "a4::", 64,
                             [VppRoutePath(self.pg2.remote_ip6,
                                           self.pg2.sw_if_index,
-                                          proto=DpoProto.DPO_PROTO_IP6,
                                           nh_table_id=vrf_1)],
-                            table_id=vrf_1,
-                            is_ip6=1)
+                            table_id=vrf_1)
         route1.add_vpp_config()
         self.logger.debug(self.vapi.cli("show ip6 fib"))
 
@@ -1033,15 +1017,13 @@ class TestSRv6(VppTestCase):
                             [VppRoutePath(self.pg1.remote_ip4,
                                           self.pg1.sw_if_index,
                                           nh_table_id=0)],
-                            table_id=0,
-                            is_ip6=0)
+                            table_id=0)
         route0.add_vpp_config()
         route1 = VppIpRoute(self, "4.1.1.0", 24,
                             [VppRoutePath(self.pg2.remote_ip4,
                                           self.pg2.sw_if_index,
                                           nh_table_id=vrf_1)],
-                            table_id=vrf_1,
-                            is_ip6=0)
+                            table_id=vrf_1)
         route1.add_vpp_config()
         self.logger.debug(self.vapi.cli("show ip fib"))
 
@@ -1195,10 +1177,9 @@ class TestSRv6(VppTestCase):
 
         # configure FIB entries
         route = VppIpRoute(self, "a4::", 64,
-                           [VppRoutePath(self.pg4.remote_ip6,
-                                         self.pg4.sw_if_index,
-                                         proto=DpoProto.DPO_PROTO_IP6)],
-                           is_ip6=1)
+                           [VppRoutePath(
+                               self.pg4.remote_ip6,
+                               self.pg4.sw_if_index)])
         route.add_vpp_config()
 
         # configure encaps IPv6 source address
@@ -1234,7 +1215,7 @@ class TestSRv6(VppTestCase):
         self.assertIsNotNone(r, 'No response msg for add_del_table')
         table_index = r.new_table_index
 
-        # add the source routign node as a ip6 inacl netxt node
+        # add the source routing node as a ip6 inacl netxt node
         r = self.vapi.add_node_next('ip6-inacl',
                                     'sr-pl-rewrite-insert')
         inacl_next_node_index = r.node_index
@@ -1437,7 +1418,7 @@ class TestSRv6(VppTestCase):
         tx_ip.chksum = None
         # read back the pkt (with str()) to force computing these fields
         # probably other ways to accomplish this are possible
-        tx_ip = IP(str(tx_ip))
+        tx_ip = IP(scapy.compat.raw(tx_ip))
 
         self.assertEqual(rx_srh.payload, tx_ip)
 
@@ -1489,7 +1470,7 @@ class TestSRv6(VppTestCase):
         self.assertEqual(rx_srh.nh, 59)
 
         # the whole rx'ed pkt beyond SRH should be equal to tx'ed pkt
-        self.assertEqual(Ether(str(rx_srh.payload)), tx_ether)
+        self.assertEqual(Ether(scapy.compat.raw(rx_srh.payload)), tx_ether)
 
         self.logger.debug("packet verification: SUCCESS")
 
@@ -1765,7 +1746,7 @@ class TestSRv6(VppTestCase):
         tx_ip2.chksum = None
         # read back the pkt (with str()) to force computing these fields
         # probably other ways to accomplish this are possible
-        tx_ip2 = IP(str(tx_ip2))
+        tx_ip2 = IP(scapy.compat.raw(tx_ip2))
 
         self.assertEqual(rx_ip, tx_ip2)
 
@@ -1791,7 +1772,7 @@ class TestSRv6(VppTestCase):
         tx_ip = tx_pkt.getlayer(IPv6)
         # we can't just get the 2nd Ether layer
         # get the Raw content and dissect it as Ether
-        tx_eth1 = Ether(str(tx_pkt[Raw]))
+        tx_eth1 = Ether(scapy.compat.raw(tx_pkt[Raw]))
 
         # verify if rx'ed packet has no SRH
         self.assertFalse(rx_pkt.haslayer(IPv6ExtHdrSegmentRouting))
@@ -1837,7 +1818,7 @@ class TestSRv6(VppTestCase):
             # read back the dumped packet (with str())
             # to force computing these fields
             # probably other ways are possible
-            p = Ether(str(p))
+            p = Ether(scapy.compat.raw(p))
             payload_info.data = p.copy()
             self.logger.debug(ppp("Created packet:", p))
             pkts.append(p)
@@ -2087,7 +2068,7 @@ class TestSRv6(VppTestCase):
             # take packet[Raw], convert it to an Ether layer
             # and then extract Raw from it
             payload_info = self.payload_to_info(
-                str(Ether(str(packet[Raw]))[Raw]))
+                Ether(scapy.compat.r(packet[Raw]))[Raw])
 
         return payload_info
 
@@ -2101,7 +2082,7 @@ class TestSRv6(VppTestCase):
         :param compare_func: function to compare in and out packet
         """
         self.logger.info("Verifying capture on interface %s using function %s"
-                         % (dst_if.name, compare_func.func_name))
+                         % (dst_if.name, compare_func.__name__))
 
         last_info = dict()
         for i in self.pg_interfaces: