X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_papi_provider.py;h=495db95052e9f171d96daaec1e6c38c99096c169;hb=0938dcf192d203dcbe89d2819d3819d2f93408bf;hp=c3127f84022390636bb1c8c84cf5d7aeefd53c93;hpb=b598f1d3d7d4ace9a29c01d93a8d1ba616a91e15;p=vpp.git diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index c3127f84022..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,7 +748,8 @@ class VppPapiProvider(object): is_classify=0, is_multipath=0, is_l2_bridged=0, - not_last=0): + is_udp_encap=0, + is_source_lookup=0): """ :param dst_address_length: @@ -766,7 +768,8 @@ class VppPapiProvider(object): :param is_multipath: (Default value = 0) :param is_resolve_host: (Default value = 0) :param is_resolve_attached: (Default value = 0) - :param not_last: (Default value = 0) + :param is_l2_bridged: (Default value = 0) + :param is_source_lookup: (Default value = 0) :param next_hop_weight: (Default value = 1) """ @@ -788,10 +791,12 @@ class VppPapiProvider(object): 'is_resolve_host': is_resolve_host, 'is_resolve_attached': is_resolve_attached, 'is_l2_bridged': is_l2_bridged, - 'not_last': not_last, + '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, @@ -979,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, {}) @@ -1020,8 +1060,7 @@ class VppPapiProvider(object): is_drop=0, is_multipath=0, classify_table_index=0xFFFFFFFF, - is_classify=0, - not_last=0): + is_classify=0): """ :param dst_address_length: @@ -1041,7 +1080,6 @@ class VppPapiProvider(object): :param is_multicast: (Default value = 0) :param is_resolve_host: (Default value = 0) :param is_resolve_attached: (Default value = 0) - :param not_last: (Default value = 0) :param next_hop_weight: (Default value = 1) """ @@ -1324,7 +1362,7 @@ class VppPapiProvider(object): protocol, vrf_id=0, local_num=0, - locals=None, + locals=[], is_add=1): """Add/delete NAT44 load balancing static mapping @@ -1347,6 +1385,66 @@ class VppPapiProvider(object): """ return self.api(self.papi.nat44_lb_static_mapping_dump, {}) + def nat44_del_session( + self, + addr, + port, + protocol, + vrf_id=0, + is_in=1): + """Delete NAT44 session + + :param addr: IPv4 address + :param por: port number + :param protocol: IP protocol number + :param vrf_id: VRF ID + :param is_in: 1 if inside network addres and port pari, 0 if outside + """ + return self.api( + self.papi.nat44_del_session, + {'address': addr, + 'port': port, + 'protocol': protocol, + '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, @@ -1625,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) @@ -2038,7 +2176,7 @@ class VppPapiProvider(object): eid, eid_prefix_len=0, vni=0, - rlocs=None, + rlocs=[], rlocs_num=0, is_src_dst=0, is_add=1): @@ -2422,3 +2560,60 @@ class VppPapiProvider(object): return self.api( self.papi.macip_acl_dump, {'acl_index': acl_index}) + + def policer_add_del(self, + name, + cir, + eir, + cb, + eb, + is_add=1, + rate_type=0, + round_type=0, + ptype=0, + color_aware=0, + conform_action_type=1, + conform_dscp=0, + exceed_action_type=0, + exceed_dscp=0, + violate_action_type=0, + violate_dscp=0): + return self.api(self.papi.policer_add_del, + {'name': name, + 'cir': cir, + 'eir': eir, + 'cb': cb, + 'eb': eb, + 'is_add': is_add, + 'rate_type': rate_type, + 'round_type': round_type, + 'type': ptype, + 'color_aware': color_aware, + 'conform_action_type': conform_action_type, + 'conform_dscp': conform_dscp, + 'exceed_action_type': exceed_action_type, + 'exceed_dscp': exceed_dscp, + 'violate_action_type': violate_action_type, + 'violate_dscp': violate_dscp}) + + def ip_punt_police(self, + policer_index, + is_ip6=0, + is_add=1): + return self.api(self.papi.ip_punt_police, + {'policer_index': policer_index, + 'is_add': is_add, + 'is_ip6': is_ip6}) + + def ip_punt_redirect(self, + rx_sw_if_index, + tx_sw_if_index, + nh, + is_ip6=0, + is_add=1): + return self.api(self.papi.ip_punt_redirect, + {'rx_sw_if_index': rx_sw_if_index, + 'tx_sw_if_index': tx_sw_if_index, + 'nh': nh, + 'is_add': is_add, + 'is_ip6': is_ip6})