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
16 def __init__(self, nh_addr, nh_sw_if_index, nh_table_id=0, labels=[], nh_via_label=MPLS_LABEL_INVALID):
17 self.nh_addr = socket.inet_pton(socket.AF_INET, nh_addr)
18 self.nh_itf = nh_sw_if_index
19 self.nh_table_id = nh_table_id
20 self.nh_via_label = nh_via_label
21 self.nh_labels = labels
29 def __init__(self, test, dest_addr,
30 dest_addr_len, paths, table_id=0):
33 self.dest_addr = socket.inet_pton(socket.AF_INET, dest_addr)
34 self.dest_addr_len = dest_addr_len
35 self.table_id = table_id
37 def add_vpp_config(self):
38 for path in self.paths:
39 self._test.vapi.ip_add_del_route(self.dest_addr,
43 table_id=self.table_id,
44 next_hop_out_label_stack=path.nh_labels,
45 next_hop_n_out_labels=len(
47 next_hop_via_label=path.nh_via_label)
49 def remove_vpp_config(self):
50 for path in self.paths:
51 self._test.vapi.ip_add_del_route(self.dest_addr,
55 table_id=self.table_id,
64 def __init__(self, test, local_label, dest_addr, dest_addr_len):
66 self.dest_addr = socket.inet_pton(socket.AF_INET, dest_addr)
67 self.dest_addr_len = dest_addr_len
68 self.local_label = local_label
70 def add_vpp_config(self):
71 self._test.vapi.mpls_ip_bind_unbind(self.local_label,
75 def remove_vpp_config(self):
76 self._test.vapi.mpls_ip_bind_unbind(self.local_label,
87 def __init__(self, test, local_label, eos_bit, paths, table_id=0):
90 self.local_label = local_label
91 self.eos_bit = eos_bit
92 self.table_id = table_id
94 def add_vpp_config(self):
95 for path in self.paths:
96 self._test.vapi.mpls_route_add_del(self.local_label,
101 table_id=self.table_id,
102 next_hop_out_label_stack=path.nh_labels,
103 next_hop_n_out_labels=len(
105 next_hop_via_label=path.nh_via_label)
107 def remove_vpp_config(self):
108 for path in self.paths:
109 self._test.vapi.mpls_route_add_del(self.local_label,
114 table_id=self.table_id,