X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_papi_provider.py;h=495db95052e9f171d96daaec1e6c38c99096c169;hb=0938dcf192d203dcbe89d2819d3819d2f93408bf;hp=8e7235659be65dbe9e1ef78ff721cda1b40acf6d;hpb=5ba86f72439a627f2084bcafb221ad77f4990168;p=vpp.git diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index 8e7235659be..495db95052e 100644 --- a/test/vpp_papi_provider.py +++ b/test/vpp_papi_provider.py @@ -195,7 +195,7 @@ class VppPapiProvider(object): return cli + "\n" + str(self.cli(cli)) def _convert_mac(self, mac): - return int(mac.replace(":", ""), 16) << 16 + return mac.replace(':', '').decode('hex') def show_version(self): """ """ @@ -735,6 +735,7 @@ class VppPapiProvider(object): next_hop_n_out_labels=0, next_hop_out_label_stack=[], next_hop_via_label=MPLS_LABEL_INVALID, + next_hop_id=0xFFFFFFFF, is_resolve_host=0, is_resolve_attached=0, classify_table_index=0xFFFFFFFF, @@ -747,6 +748,7 @@ class VppPapiProvider(object): is_classify=0, is_multipath=0, is_l2_bridged=0, + is_udp_encap=0, is_source_lookup=0): """ @@ -790,9 +792,11 @@ class VppPapiProvider(object): 'is_resolve_attached': is_resolve_attached, 'is_l2_bridged': is_l2_bridged, 'is_source_lookup': is_source_lookup, + 'is_udp_encap': is_udp_encap, 'next_hop_weight': next_hop_weight, 'dst_address_length': dst_address_length, 'dst_address': dst_address, + 'next_hop_id': next_hop_id, 'next_hop_address': next_hop_address, 'next_hop_n_out_labels': next_hop_n_out_labels, 'next_hop_via_label': next_hop_via_label, @@ -980,6 +984,41 @@ class VppPapiProvider(object): 'outer_fib_id': outer_fib_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): + """ Add a GRE tunnel + :param id: user provided ID + :param src_ip: + :param dst_ip: + :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} + ) + + def udp_encap_dump(self): + return self.api(self.papi.udp_encap_dump, {}) + def mpls_fib_dump(self): return self.api(self.papi.mpls_fib_dump, {}) @@ -1369,6 +1408,43 @@ class VppPapiProvider(object): 'vrf_id': vrf_id, 'is_in': is_in}) + def nat_set_reass( + self, + timeout=2, + max_reass=1024, + max_frag=5, + drop_frag=0, + is_ip6=0): + """Set NAT virtual fragmentation reassembly + + :param timeout: reassembly timeout (Default 2sec) + :param max_reass: maximum concurrent reassemblies (Default 1024) + :param max_frag: maximum fragmets per reassembly (Default 5) + :param drop_frag: if 0 translate fragments, otherwise drop fragments + :param is_ip6: 1 if IPv6, 0 if IPv4 + """ + return self.api( + self.papi.nat_set_reass, + {'timeout': timeout, + 'max_reass': max_reass, + 'max_frag': max_frag, + 'drop_frag': drop_frag, + 'is_ip6': is_ip6}) + + def nat_get_reass(self): + """Get NAT virtual fragmentation reassembly configuration + + :return: NAT virtual fragmentation reassembly configuration + """ + return self.api(self.papi.nat_get_reass, {}) + + def nat_reass_dump(self): + """Dump NAT virtual fragmentation reassemblies + + :return: Dictionary of NAT virtual fragmentation reassemblies + """ + return self.api(self.papi.nat_reass_dump, {}) + def nat_det_add_del_map( self, in_addr, @@ -1647,6 +1723,46 @@ class VppPapiProvider(object): """ return self.api(self.papi.nat64_prefix_dump, {}) + def nat64_add_interface_addr( + self, + sw_if_index, + is_add=1): + """Add/del NAT64 address from interface + + :param sw_if_index: Software index of the interface + :param is_add: 1 if add, 0 if delete (Default value = 1) + """ + return self.api(self.papi.nat64_add_del_interface_addr, + {'is_add': is_add, 'sw_if_index': sw_if_index}) + + def dslite_set_aftr_addr(self, ip6, ip4): + """Set DS-Lite AFTR addresses + + :param ip4: IPv4 address + :param ip6: IPv6 address + """ + return self.api( + self.papi.dslite_set_aftr_addr, + {'ip4_addr': ip4, + 'ip6_addr': ip6}) + + def dslite_add_del_pool_addr_range( + self, + start_addr, + end_addr, + is_add=1): + """Add/del address range to DS-Lite pool + + :param start_addr: First IP address + :param end_addr: Last IP address + :param is_add: 1 if add, 0 if delete (Default value = 1) + """ + return self.api( + self.papi.dslite_add_del_pool_addr_range, + {'start_addr': start_addr, + 'end_addr': end_addr, + 'is_add': is_add}) + def control_ping(self): self.api(self.papi.control_ping)