X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_ip_route.py;h=00a79f442329f43b6fe05ea1427607b93efd7fe4;hb=28c142e3;hp=216f5c7b2c189554187881293a24386f9b0056df;hpb=3b93be5d76cbcb5dc3d3aee5c72a797014a346f9;p=vpp.git diff --git a/test/vpp_ip_route.py b/test/vpp_ip_route.py index 216f5c7b2c1..00a79f44232 100644 --- a/test/vpp_ip_route.py +++ b/test/vpp_ip_route.py @@ -6,6 +6,7 @@ from vpp_object import * from socket import inet_pton, inet_ntop, AF_INET, AF_INET6 +from vpp_ip import * # from vnet/vnet/mpls/mpls_types.h MPLS_IETF_MAX_LABEL = 0xfffff @@ -29,15 +30,6 @@ class MRouteEntryFlags: MFIB_ENTRY_FLAG_INHERIT_ACCEPT = 8 -class DpoProto: - DPO_PROTO_IP4 = 0 - DPO_PROTO_IP6 = 1 - DPO_PROTO_MPLS = 2 - DPO_PROTO_ETHERNET = 3 - DPO_PROTO_BIER = 4 - DPO_PROTO_NSH = 5 - - class MplsLspMode: PIPE = 0 UNIFORM = 1 @@ -200,6 +192,9 @@ class VppRoutePath(object): 'n_labels': len(self.nh_labels), 'label_stack': self.encode_labels()} + def __eq__(self, other): + return self.nh_addr == other.nh_addr + class VppMRoutePath(VppRoutePath): @@ -249,7 +244,7 @@ class VppIpRoute(VppObject): def add_vpp_config(self): if self.is_local or self.is_unreach or \ self.is_prohibit or self.is_drop: - self._test.vapi.ip_add_del_route( + r = self._test.vapi.ip_add_del_route( self.dest_addr, self.dest_addr_len, inet_pton(AF_INET6, "::"), @@ -264,7 +259,7 @@ class VppIpRoute(VppObject): for path in self.paths: lstack = path.encode_labels() - self._test.vapi.ip_add_del_route( + r = self._test.vapi.ip_add_del_route( self.dest_addr, self.dest_addr_len, path.nh_addr, @@ -282,6 +277,7 @@ class VppIpRoute(VppObject): is_source_lookup=path.is_source_lookup, is_udp_encap=path.is_udp_encap, is_multipath=1 if len(self.paths) > 1 else 0) + self.stats_index = r.stats_index self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): @@ -330,6 +326,14 @@ class VppIpRoute(VppObject): self.dest_addr_p, self.dest_addr_len)) + def get_stats_to(self): + c = self._test.statistics.get_counter("/net/route/to") + return c[0][self.stats_index] + + def get_stats_via(self): + c = self._test.statistics.get_counter("/net/route/via") + return c[0][self.stats_index] + class VppIpMRoute(VppObject): """ @@ -358,18 +362,19 @@ class VppIpMRoute(VppObject): def add_vpp_config(self): for path in self.paths: - self._test.vapi.ip_mroute_add_del(self.src_addr, - self.grp_addr, - self.grp_addr_len, - self.e_flags, - path.proto, - path.nh_itf, - path.nh_addr, - path.nh_i_flags, - bier_imp=path.bier_imp, - rpf_id=self.rpf_id, - table_id=self.table_id, - is_ipv6=self.is_ip6) + r = self._test.vapi.ip_mroute_add_del(self.src_addr, + self.grp_addr, + self.grp_addr_len, + self.e_flags, + path.proto, + path.nh_itf, + path.nh_addr, + path.nh_i_flags, + bier_imp=path.bier_imp, + rpf_id=self.rpf_id, + table_id=self.table_id, + is_ipv6=self.is_ip6) + self.stats_index = r.stats_index self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): @@ -455,6 +460,10 @@ class VppIpMRoute(VppObject): inet_ntop(AF_INET, self.grp_addr), self.grp_addr_len)) + def get_stats(self): + c = self._test.statistics.get_counter("/net/mroute") + return c[0][self.stats_index] + class VppMFibSignal(object): def __init__(self, test, route, interface, packet): @@ -586,7 +595,7 @@ class VppMplsRoute(VppObject): for path in self.paths: lstack = path.encode_labels() - self._test.vapi.mpls_route_add_del( + r = self._test.vapi.mpls_route_add_del( self.local_label, self.eos_bit, path.proto, @@ -601,6 +610,7 @@ class VppMplsRoute(VppObject): next_hop_n_out_labels=len(lstack), next_hop_via_label=path.nh_via_label, next_hop_table_id=path.nh_table_id) + self.stats_index = r.stats_index self._test.registry.register(self, self._test.logger) def remove_vpp_config(self): @@ -631,3 +641,11 @@ class VppMplsRoute(VppObject): % (self.table_id, self.local_label, 20+self.eos_bit)) + + def get_stats_to(self): + c = self._test.statistics.get_counter("/net/route/to") + return c[0][self.stats_index] + + def get_stats_via(self): + c = self._test.statistics.get_counter("/net/route/via") + return c[0][self.stats_index]