4 object abstractions for representing IP routes in VPP
9 # from vnet/vnet/mpls/mpls_types.h
10 MPLS_IETF_MAX_LABEL = 0xfffff
11 MPLS_LABEL_INVALID = MPLS_IETF_MAX_LABEL + 1
22 nh_via_label=MPLS_LABEL_INVALID):
23 self.nh_addr = socket.inet_pton(socket.AF_INET, nh_addr)
24 self.nh_itf = nh_sw_if_index
25 self.nh_table_id = nh_table_id
26 self.nh_via_label = nh_via_label
27 self.nh_labels = labels
35 def __init__(self, test, dest_addr,
36 dest_addr_len, paths, table_id=0):
39 self.dest_addr = socket.inet_pton(socket.AF_INET, dest_addr)
40 self.dest_addr_len = dest_addr_len
41 self.table_id = table_id
43 def add_vpp_config(self):
44 for path in self.paths:
45 self._test.vapi.ip_add_del_route(
50 table_id=self.table_id,
51 next_hop_out_label_stack=path.nh_labels,
52 next_hop_n_out_labels=len(
54 next_hop_via_label=path.nh_via_label)
56 def remove_vpp_config(self):
57 for path in self.paths:
58 self._test.vapi.ip_add_del_route(self.dest_addr,
62 table_id=self.table_id,
71 def __init__(self, test, local_label, dest_addr, dest_addr_len):
73 self.dest_addr = socket.inet_pton(socket.AF_INET, dest_addr)
74 self.dest_addr_len = dest_addr_len
75 self.local_label = local_label
77 def add_vpp_config(self):
78 self._test.vapi.mpls_ip_bind_unbind(self.local_label,
82 def remove_vpp_config(self):
83 self._test.vapi.mpls_ip_bind_unbind(self.local_label,
94 def __init__(self, test, local_label, eos_bit, paths, table_id=0):
97 self.local_label = local_label
98 self.eos_bit = eos_bit
99 self.table_id = table_id
101 def add_vpp_config(self):
102 for path in self.paths:
103 self._test.vapi.mpls_route_add_del(
109 table_id=self.table_id,
110 next_hop_out_label_stack=path.nh_labels,
111 next_hop_n_out_labels=len(
113 next_hop_via_label=path.nh_via_label,
114 next_hop_table_id=path.nh_table_id)
116 def remove_vpp_config(self):
117 for path in self.paths:
118 self._test.vapi.mpls_route_add_del(self.local_label,
123 table_id=self.table_id,