6 from vpp_object import VppObject
9 class BIER_HDR_PAYLOAD:
10 BIER_HDR_PROTO_MPLS_DOWN_STREAM = 1
11 BIER_HDR_PROTO_MPLS_UP_STREAM = 2
12 BIER_HDR_PROTO_ETHERNET = 3
13 BIER_HDR_PROTO_IPV4 = 4
14 BIER_HDR_PROTO_IPV6 = 5
15 BIER_HDR_PROTO_VXLAN = 6
16 BIER_HDR_PROTO_CTRL = 7
17 BIER_HDR_PROTO_OAM = 8
20 class VppBierTableID():
21 def __init__(self, set_id, sub_domain_id, hdr_len_id):
23 self.sub_domain_id = sub_domain_id
24 self.hdr_len_id = hdr_len_id
27 def find_bier_table(test, bti):
28 tables = test.vapi.bier_table_dump()
30 if bti.set_id == t.bt_tbl_id.bt_set \
31 and bti.sub_domain_id == t.bt_tbl_id.bt_sub_domain \
32 and bti.hdr_len_id == t.bt_tbl_id.bt_hdr_len_id:
37 def find_bier_route(test, bti, bp):
38 routes = test.vapi.bier_route_dump(bti)
40 if bti.set_id == r.br_tbl_id.bt_set \
41 and bti.sub_domain_id == r.br_tbl_id.bt_sub_domain \
42 and bti.hdr_len_id == r.br_tbl_id.bt_hdr_len_id \
48 def find_bier_disp_table(test, bdti):
49 tables = test.vapi.bier_disp_table_dump()
51 if bdti == t.bdt_tbl_id:
56 def find_bier_disp_entry(test, bdti, bp):
57 entries = test.vapi.bier_disp_entry_dump(bdti)
60 and bdti == e.bde_tbl_id:
65 def find_bier_imp(test, bti, bp):
66 imps = test.vapi.bier_imp_dump()
68 if bti.set_id == i.bi_tbl_id.bt_set \
69 and bti.sub_domain_id == i.bi_tbl_id.bt_sub_domain \
70 and bti.hdr_len_id == i.bi_tbl_id.bt_hdr_len_id \
76 class VppBierTable(VppObject):
81 def __init__(self, test, id, mpls_label):
84 self.mpls_label = mpls_label
86 def add_vpp_config(self):
87 self._test.vapi.bier_table_add_del(
91 self._test.registry.register(self, self._test.logger)
93 def remove_vpp_config(self):
94 self._test.vapi.bier_table_add_del(
100 return self.object_id()
103 return "bier-table;[%d:%d:%d]" % (self.id.set_id,
104 self.id.sub_domain_id,
107 def query_vpp_config(self):
108 return find_bier_table(self._test, self.id)
111 class VppBierRoute(VppObject):
116 def __init__(self, test, tbl_id, bp, nh, out_label,
120 self.out_label = out_label
122 self.disp_table = disp_table
123 self.nh = socket.inet_pton(socket.AF_INET, nh)
125 def add_vpp_config(self):
126 self._test.vapi.bier_route_add_del(
133 self._test.registry.register(self, self._test.logger)
135 def remove_vpp_config(self):
136 self._test.vapi.bier_route_add_del(
145 return self.object_id()
148 return "bier-route;[%d:%d:%d:%d]" % (self.tbl_id.set_id,
149 self.tbl_id.sub_domain_id,
150 self.tbl_id.hdr_len_id,
153 def query_vpp_config(self):
154 return find_bier_route(self._test, self.tbl_id, self.bp)
157 class VppBierImp(VppObject):
162 def __init__(self, test, tbl_id, src, ibytes):
168 def add_vpp_config(self):
169 res = self._test.vapi.bier_imp_add(
173 self.bi_index = res.bi_index
174 self._test.registry.register(self, self._test.logger)
176 def remove_vpp_config(self):
177 self._test.vapi.bier_imp_del(
181 return self.object_id()
184 return "bier-imp;[%d:%d:%d:%d]" % (self.tbl_id.set_id,
185 self.tbl_id.sub_domain_id,
186 self.tbl_id.hdr_len_id,
189 def query_vpp_config(self):
190 return find_bier_imp(self._test, self.tbl_id, self.src)
193 class VppBierDispTable(VppObject):
195 BIER Disposition Table
198 def __init__(self, test, id):
202 def add_vpp_config(self):
203 self._test.vapi.bier_disp_table_add_del(
206 self._test.registry.register(self, self._test.logger)
208 def remove_vpp_config(self):
209 self._test.vapi.bier_disp_table_add_del(
214 return self.object_id()
217 return "bier-disp-table;[%d]" % (self.id)
219 def query_vpp_config(self):
220 return find_bier_disp_table(self._test, self.id)
223 class VppBierDispEntry(VppObject):
225 BIER Disposition Entry
228 def __init__(self, test, tbl_id, bp, payload_proto, nh, nh_tbl,
234 self.payload_proto = payload_proto
236 self.nh = socket.inet_pton(socket.AF_INET, nh)
238 def add_vpp_config(self):
239 self._test.vapi.bier_disp_entry_add_del(
247 self._test.registry.register(self, self._test.logger)
249 def remove_vpp_config(self):
250 self._test.vapi.bier_disp_entry_add_del(
260 return self.object_id()
263 return "bier-disp-entry;[%d:%d]" % (self.tbl_id,
266 def query_vpp_config(self):
267 return find_bier_disp_entry(self._test, self.tbl_id, self.bp)