nat: use correct data types for memory sizes
[vpp.git] / test / vpp_bier.py
index 58c4f72..6e087a8 100644 (file)
@@ -4,6 +4,7 @@
 
 import socket
 from vpp_object import VppObject
+from vpp_ip_route import MPLS_LABEL_INVALID, VppRoutePath, VppMplsLabel
 
 
 class BIER_HDR_PAYLOAD:
@@ -18,7 +19,7 @@ class BIER_HDR_PAYLOAD:
 
 
 class VppBierTableID():
-    def __init__(self, set_id, sub_domain_id, hdr_len_id):
+    def __init__(self, sub_domain_id, set_id, hdr_len_id):
         self.set_id = set_id
         self.sub_domain_id = sub_domain_id
         self.hdr_len_id = hdr_len_id
@@ -37,10 +38,10 @@ def find_bier_table(test, bti):
 def find_bier_route(test, bti, bp):
     routes = test.vapi.bier_route_dump(bti)
     for r in routes:
-        if bti.set_id == r.br_tbl_id.bt_set \
-           and bti.sub_domain_id == r.br_tbl_id.bt_sub_domain \
-           and bti.hdr_len_id == r.br_tbl_id.bt_hdr_len_id \
-           and bp == r.br_bp:
+        if bti.set_id == r.br_route.br_tbl_id.bt_set \
+           and bti.sub_domain_id == r.br_route.br_tbl_id.bt_sub_domain \
+           and bti.hdr_len_id == r.br_route.br_tbl_id.bt_hdr_len_id \
+           and bp == r.br_route.br_bp:
             return True
     return False
 
@@ -96,9 +97,6 @@ class VppBierTable(VppObject):
             self.mpls_label,
             is_add=0)
 
-    def __str__(self):
-        return self.object_id()
-
     def object_id(self):
         return "bier-table;[%d:%d:%d]" % (self.id.set_id,
                                           self.id.sub_domain_id,
@@ -113,22 +111,20 @@ class VppBierRoute(VppObject):
     BIER route
     """
 
-    def __init__(self, test, tbl_id, bp, nh, out_label,
-                 disp_table=0):
+    def __init__(self, test, tbl_id, bp, paths):
         self._test = test
         self.tbl_id = tbl_id
-        self.out_label = out_label
         self.bp = bp
-        self.disp_table = disp_table
-        self.nh = socket.inet_pton(socket.AF_INET, nh)
+        self.paths = paths
+        self.encoded_paths = []
+        for path in self.paths:
+            self.encoded_paths.append(path.encode())
 
     def add_vpp_config(self):
         self._test.vapi.bier_route_add_del(
             self.tbl_id,
             self.bp,
-            self.nh,
-            self.out_label,
-            self.disp_table,
+            self.encoded_paths,
             is_add=1)
         self._test.registry.register(self, self._test.logger)
 
@@ -136,13 +132,49 @@ class VppBierRoute(VppObject):
         self._test.vapi.bier_route_add_del(
             self.tbl_id,
             self.bp,
-            self.nh,
-            self.out_label,
-            self.disp_table,
+            self.encoded_paths,
             is_add=0)
 
-    def __str__(self):
-        return self.object_id()
+    def update_paths(self, paths):
+        self.paths = paths
+        self.encoded_paths = []
+        for path in self.paths:
+            self.encoded_paths.append(path.encode())
+        self._test.vapi.bier_route_add_del(
+            self.tbl_id,
+            self.bp,
+            self.encoded_paths,
+            is_replace=1)
+
+    def add_path(self, path):
+        self.encoded_paths.append(path.encode())
+        self._test.vapi.bier_route_add_del(
+            self.tbl_id,
+            self.bp,
+            [path.encode()],
+            is_add=1,
+            is_replace=0)
+        self.paths.append(path)
+        self._test.registry.register(self, self._test.logger)
+
+    def remove_path(self, path):
+        self.encoded_paths.remove(path.encode())
+        self._test.vapi.bier_route_add_del(
+            self.tbl_id,
+            self.bp,
+            [path.encode()],
+            is_add=0,
+            is_replace=0)
+        self.paths.remove(path)
+
+    def remove_all_paths(self):
+        self._test.vapi.bier_route_add_del(
+            self.tbl_id,
+            self.bp,
+            [],
+            is_add=0,
+            is_replace=1)
+        self.paths = []
 
     def object_id(self):
         return "bier-route;[%d:%d:%d:%d]" % (self.tbl_id.set_id,
@@ -177,9 +209,6 @@ class VppBierImp(VppObject):
         self._test.vapi.bier_imp_del(
             self.bi_index)
 
-    def __str__(self):
-        return self.object_id()
-
     def object_id(self):
         return "bier-imp;[%d:%d:%d:%d]" % (self.tbl_id.set_id,
                                            self.tbl_id.sub_domain_id,
@@ -210,9 +239,6 @@ class VppBierDispTable(VppObject):
             self.id,
             is_add=0)
 
-    def __str__(self):
-        return self.object_id()
-
     def object_id(self):
         return "bier-disp-table;[%d]" % (self.id)
 
@@ -225,11 +251,12 @@ class VppBierDispEntry(VppObject):
     BIER Disposition Entry
     """
 
-    def __init__(self, test, tbl_id, bp, payload_proto, nh, nh_tbl,
-                 rpf_id=~0):
+    def __init__(self, test, tbl_id, bp, payload_proto, nh_proto,
+                 nh, nh_tbl, rpf_id=~0):
         self._test = test
         self.tbl_id = tbl_id
         self.nh_tbl = nh_tbl
+        self.nh_proto = nh_proto
         self.bp = bp
         self.payload_proto = payload_proto
         self.rpf_id = rpf_id
@@ -240,6 +267,7 @@ class VppBierDispEntry(VppObject):
             self.tbl_id,
             self.bp,
             self.payload_proto,
+            self.nh_proto,
             self.nh,
             self.nh_tbl,
             self.rpf_id,
@@ -251,14 +279,12 @@ class VppBierDispEntry(VppObject):
             self.tbl_id,
             self.bp,
             self.payload_proto,
+            self.nh_proto,
             self.nh,
             self.nh_tbl,
             self.rpf_id,
             is_add=0)
 
-    def __str__(self):
-        return self.object_id()
-
     def object_id(self):
         return "bier-disp-entry;[%d:%d]" % (self.tbl_id,
                                             self.bp)