X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_bier.py;h=6e087a8ee0bbf0ddcd3bd93931c0cc927c459efd;hb=8a10c7351b35ab8405c2a9b030dba74a4da28f30;hp=58c4f7248da17c742fd044dca805a0b24f1cb3b4;hpb=d792d9c01e60656cbfe1b0f1fd6a9b125f5dab0c;p=vpp.git diff --git a/test/vpp_bier.py b/test/vpp_bier.py index 58c4f7248da..6e087a8ee0b 100644 --- a/test/vpp_bier.py +++ b/test/vpp_bier.py @@ -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)