X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_papi_provider.py;h=f9ac7694bf6d769cd834a7ab77bc1ccda052ce6f;hb=d0df49f2;hp=29f07de459ecfa2558f055dac0b17b8138021dde;hpb=a98346f664aae148d26a8e158008b773d73db96f;p=vpp.git diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index 29f07de459e..f9ac7694bf6 100644 --- a/test/vpp_papi_provider.py +++ b/test/vpp_papi_provider.py @@ -70,7 +70,7 @@ class VppPapiProvider(object): for filename in fnmatch.filter(filenames, '*.api.json'): jsonfiles.append(os.path.join(root, filename)) - self.vpp = VPP(jsonfiles, logger=test_class.logger) + self.vpp = VPP(jsonfiles, logger=test_class.logger, read_timeout=5) self._events = deque() def __enter__(self): @@ -275,6 +275,10 @@ class VppPapiProvider(object): 'unnumbered_sw_if_index': sw_if_index, 'is_add': is_add}) + def ip_unnumbered_dump(self, sw_if_index=0xffffffff): + return self.api(self.papi.ip_unnumbered_dump, + {'sw_if_index': sw_if_index}) + def sw_interface_enable_disable_mpls(self, sw_if_index, is_enable=1): """ @@ -720,6 +724,18 @@ class VppPapiProvider(object): {'sw_if_index': sw_if_index, 'enable': enable}) + def sw_interface_set_ip_directed_broadcast( + self, + sw_if_index, + enable=1): + """IP Directed broadcast + :param sw_if_index - interface the operation is applied to + + """ + return self.api(self.papi.sw_interface_set_ip_directed_broadcast, + {'sw_if_index': sw_if_index, + 'enable': enable}) + def sw_interface_set_flags(self, sw_if_index, admin_up_down): """ @@ -1133,15 +1149,13 @@ class VppPapiProvider(object): 'session_id': session_id} ) - def udp_encap_add_del(self, - id, - src_ip, - dst_ip, - src_port, - dst_port, - table_id=0, - is_add=1, - is_ip6=0): + def udp_encap_add(self, + id, + src_ip, + dst_ip, + src_port, + dst_port, + table_id=0): """ Add a GRE tunnel :param id: user provided ID :param src_ip: @@ -1149,21 +1163,23 @@ class VppPapiProvider(object): :param src_port: :param dst_port: :param outer_fib_id: (Default value = 0) - :param is_add: (Default value = 1) - :param is_ipv6: (Default value = 0) """ return self.api( - self.papi.udp_encap_add_del, - {'id': id, - 'is_add': is_add, - 'is_ip6': is_ip6, - 'src_ip': src_ip, - 'dst_ip': dst_ip, - 'src_port': src_port, - 'dst_port': dst_port, - 'table_id': table_id} - ) + self.papi.udp_encap_add, + { + 'udp_encap': { + 'id': id, + 'src_ip': src_ip, + 'dst_ip': dst_ip, + 'src_port': src_port, + 'dst_port': dst_port, + 'table_id': table_id + } + }) + + def udp_encap_del(self, id): + return self.api(self.papi.udp_encap_del, {'id': id}) def udp_encap_dump(self): return self.api(self.papi.udp_encap_dump, {}) @@ -1573,7 +1589,6 @@ class VppPapiProvider(object): external_addr, external_port, protocol, - vrf_id=0, twice_nat=0, self_twice_nat=0, out2in_only=0, @@ -1593,7 +1608,6 @@ class VppPapiProvider(object): 'external_addr': external_addr, 'external_port': external_port, 'protocol': protocol, - 'vrf_id': vrf_id, 'twice_nat': twice_nat, 'self_twice_nat': self_twice_nat, 'out2in_only': out2in_only, @@ -2220,6 +2234,8 @@ class VppPapiProvider(object): :param current_data_offset: (Default value = 0) """ + mask_len = ((len(mask) - 1) / 16 + 1) * 16 + mask = mask + '\0' * (mask_len - len(mask)) return self.api( self.papi.classify_add_del_table, {'is_add': is_add, @@ -2232,6 +2248,7 @@ class VppPapiProvider(object): 'miss_next_index': miss_next_index, 'current_data_flag': current_data_flag, 'current_data_offset': current_data_offset, + 'mask_len': mask_len, 'mask': mask}) def classify_add_del_session( @@ -2255,6 +2272,8 @@ class VppPapiProvider(object): :param metadata: (Default value = 0) """ + match_len = ((len(match) - 1) / 16 + 1) * 16 + match = match + '\0' * (match_len - len(match)) return self.api( self.papi.classify_add_del_session, {'is_add': is_add, @@ -2264,6 +2283,7 @@ class VppPapiProvider(object): 'advance': advance, 'action': action, 'metadata': metadata, + 'match_len': match_len, 'match': match}) def input_acl_set_interface( @@ -3474,7 +3494,14 @@ class VppPapiProvider(object): 'input_source': input_source, 'enable': enable}) - def igmp_listen(self, enable, sw_if_index, saddr, gaddr): + def igmp_enable_disable(self, sw_if_index, enable, host): + """ Enable/disable IGMP on a given interface """ + return self.api(self.papi.igmp_enable_disable, + {'enable': enable, + 'mode': host, + 'sw_if_index': sw_if_index}) + + def igmp_listen(self, filter, sw_if_index, saddrs, gaddr): """ Listen for new (S,G) on specified interface :param enable: add/del @@ -3483,20 +3510,26 @@ class VppPapiProvider(object): :param gaddr: group ip4 addr """ return self.api(self.papi.igmp_listen, - {'enable': enable, - 'sw_if_index': sw_if_index, - 'saddr': saddr, - 'gaddr': gaddr}) + { + 'group': + { + 'filter': filter, + 'sw_if_index': sw_if_index, + 'n_srcs': len(saddrs), + 'saddrs': saddrs, + 'gaddr': + { + 'address': gaddr + } + } + }) def igmp_dump(self, sw_if_index=None): """ Dump all (S,G) interface configurations """ if sw_if_index is None: - dump_all = 1 - sw_if_index = 0 - else: - dump_all = 0 - return self.api(self.papi.igmp_dump, {'sw_if_index': sw_if_index, - 'dump_all': dump_all}) + sw_if_index = 0xffffffff + return self.api(self.papi.igmp_dump, + {'sw_if_index': sw_if_index}) def igmp_clear_interface(self, sw_if_index): """ Remove all (S,G)s from specified interface @@ -3650,3 +3683,15 @@ class VppPapiProvider(object): def abf_itf_attach_dump(self): return self.api( self.papi.abf_itf_attach_dump, {}) + + def pipe_create(self, is_specified, user_instance): + return self.api(self.papi.pipe_create, + {'is_specified': is_specified, + 'user_instance': user_instance}) + + def pipe_delete(self, parent_sw_if_index): + return self.api(self.papi.pipe_delete, + {'parent_sw_if_index': parent_sw_if_index}) + + def pipe_dump(self): + return self.api(self.papi.pipe_dump, {})