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,
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
29 self.nh_addr = socket.inet_pton(socket.AF_INET6, nh_addr)
31 self.nh_addr = socket.inet_pton(socket.AF_INET, nh_addr)
39 def __init__(self, test, dest_addr,
40 dest_addr_len, paths, table_id=0, is_ip6=0, is_local=0):
43 self.dest_addr_len = dest_addr_len
44 self.table_id = table_id
46 self.is_local = is_local
48 self.dest_addr = socket.inet_pton(socket.AF_INET6, dest_addr)
50 self.dest_addr = socket.inet_pton(socket.AF_INET, dest_addr)
52 def add_vpp_config(self):
54 self._test.vapi.ip_add_del_route(
57 socket.inet_pton(socket.AF_INET6, "::"),
60 table_id=self.table_id,
63 for path in self.paths:
64 self._test.vapi.ip_add_del_route(
69 table_id=self.table_id,
70 next_hop_out_label_stack=path.nh_labels,
71 next_hop_n_out_labels=len(
73 next_hop_via_label=path.nh_via_label,
76 def remove_vpp_config(self):
78 self._test.vapi.ip_add_del_route(
81 socket.inet_pton(socket.AF_INET6, "::"),
85 table_id=self.table_id,
88 for path in self.paths:
89 self._test.vapi.ip_add_del_route(self.dest_addr,
93 table_id=self.table_id,
102 def __init__(self, test, local_label, dest_addr, dest_addr_len):
104 self.dest_addr = socket.inet_pton(socket.AF_INET, dest_addr)
105 self.dest_addr_len = dest_addr_len
106 self.local_label = local_label
108 def add_vpp_config(self):
109 self._test.vapi.mpls_ip_bind_unbind(self.local_label,
113 def remove_vpp_config(self):
114 self._test.vapi.mpls_ip_bind_unbind(self.local_label,
125 def __init__(self, test, local_label, eos_bit, paths, table_id=0):
128 self.local_label = local_label
129 self.eos_bit = eos_bit
130 self.table_id = table_id
132 def add_vpp_config(self):
133 for path in self.paths:
134 self._test.vapi.mpls_route_add_del(
140 table_id=self.table_id,
141 next_hop_out_label_stack=path.nh_labels,
142 next_hop_n_out_labels=len(
144 next_hop_via_label=path.nh_via_label,
145 next_hop_table_id=path.nh_table_id)
147 def remove_vpp_config(self):
148 for path in self.paths:
149 self._test.vapi.mpls_route_add_del(self.local_label,
154 table_id=self.table_id,