X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Fvpp_papi_provider.py;h=1a09d8c5e21c47ed35858c60b8487185eff25cc3;hb=81119e8;hp=4fdd94ba35149f6da63385f5678f3c26b4c45cff;hpb=0e89dfc9167257b4e357222ea8fd176408577203;p=vpp.git diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index 4fdd94ba351..1a09d8c5e21 100644 --- a/test/vpp_papi_provider.py +++ b/test/vpp_papi_provider.py @@ -503,6 +503,50 @@ class VppPapiProvider(object): 'learn_limit': learn_limit, 'pid': os.getpid(), }) + def want_dhcp6_pd_reply_events(self, enable_disable=1): + return self.api(self.papi.want_dhcp6_pd_reply_events, + {'enable_disable': enable_disable, + 'pid': os.getpid()}) + + def dhcp6_clients_enable_disable(self, enable=1): + return self.api(self.papi.dhcp6_clients_enable_disable, + {'enable': enable}) + + def dhcp6_pd_send_client_message(self, msg_type, sw_if_index, T1, T2, + prefixes, server_index=0xFFFFFFFF, + irt=0, mrt=0, mrc=1, mrd=0, stop=0, + ): + return self.api(self.papi.dhcp6_pd_send_client_message, + {'sw_if_index': sw_if_index, + 'server_index': server_index, + 'irt': irt, + 'mrt': mrt, + 'mrc': mrc, + 'mrd': mrd, + 'stop': stop, + 'msg_type': msg_type, + 'T1': T1, + 'T2': T2, + 'n_prefixes': len(prefixes), + 'prefixes': prefixes}) + + def dhcp6_pd_client_enable_disable(self, sw_if_index, prefix_group='', + enable=1): + return self.api(self.papi.dhcp6_pd_client_enable_disable, + {'sw_if_index': sw_if_index, + 'prefix_group': prefix_group, + 'enable': enable}) + + def ip6_add_del_address_using_prefix(self, sw_if_index, address, + prefix_length, prefix_group, + is_add=1): + return self.api(self.papi.ip6_add_del_address_using_prefix, + {'sw_if_index': sw_if_index, + 'prefix_group': prefix_group, + 'address': address, + 'prefix_length': prefix_length, + 'is_add': is_add}) + def l2fib_add_del(self, mac, bd_id, sw_if_index, is_add=1, static_mac=0, filter_mac=0, bvi_mac=0): """Create/delete L2 FIB entry. @@ -568,7 +612,8 @@ class VppPapiProvider(object): 'enable': enable}) def bridge_flags(self, bd_id, is_set, feature_bitmap): - """Enable/disable required feature of the bridge domain with defined ID. + """Enable/disable required feature of the bridge domain with defined + ID. :param int bd_id: Bridge domain ID. :param int is_set: Set to 1 to enable, set to 0 to disable the feature. @@ -667,6 +712,16 @@ class VppPapiProvider(object): {'sw_if_index': sw_if_index, 'mtu': mtu}) + def sw_interface_set_promiscuous(self, sw_if_index, enable): + """ + :param sw_if_index: + :param enable: + + """ + return self.api(self.papi.sw_interface_set_promiscuous, + {'sw_if_index': sw_if_index, + 'enable': enable}) + def sw_interface_set_mac_address(self, sw_if_index, mac): return self.api(self.papi.sw_interface_set_mac_address, {'sw_if_index': sw_if_index, @@ -928,12 +983,13 @@ class VppPapiProvider(object): return self.api( self.papi.proxy_arp_add_del, - {'vrf_id': vrf_id, - 'is_add': is_add, - 'low_address': low_address, - 'hi_address': hi_address, - } - ) + {'proxy': + { + 'vrf_id': vrf_id, + 'low_address': low_address, + 'hi_address': hi_address, + }, + 'is_add': is_add}) def proxy_arp_intfc_enable_disable(self, sw_if_index, @@ -1291,6 +1347,7 @@ class VppPapiProvider(object): vrf_id=0, protocol=0, twice_nat=0, + self_twice_nat=0, out2in_only=0, tag="", is_add=1): @@ -1305,6 +1362,9 @@ class VppPapiProvider(object): :param vrf_id: VRF ID :param protocol: IP protocol (Default value = 0) :param twice_nat: 1 if translate external host address and port + :param self_twice_nat: 1 if translate external host address and port + whenever external host address equals + local address of internal host :param out2in_only: if 1 rule is matching only out2in direction :param tag: Opaque string tag :param is_add: 1 if add, 0 if delete (Default value = 1) @@ -1321,6 +1381,7 @@ class VppPapiProvider(object): 'vrf_id': vrf_id, 'protocol': protocol, 'twice_nat': twice_nat, + 'self_twice_nat': self_twice_nat, 'out2in_only': out2in_only, 'tag': tag}) @@ -1485,6 +1546,7 @@ class VppPapiProvider(object): protocol, vrf_id=0, twice_nat=0, + self_twice_nat=0, out2in_only=0, tag='', local_num=0, @@ -1504,6 +1566,7 @@ class VppPapiProvider(object): 'protocol': protocol, 'vrf_id': vrf_id, 'twice_nat': twice_nat, + 'self_twice_nat': self_twice_nat, 'out2in_only': out2in_only, 'tag': tag, 'local_num': local_num, @@ -1522,7 +1585,9 @@ class VppPapiProvider(object): port, protocol, vrf_id=0, - is_in=1): + is_in=1, + ext_host_address=None, + ext_host_port=0): """Delete NAT44 session :param addr: IPv4 address @@ -1530,14 +1595,28 @@ class VppPapiProvider(object): :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}) + :param ext_host_address: external host IPv4 address + :param ext_host_port: external host port + """ + if ext_host_address is None: + return self.api( + self.papi.nat44_del_session, + {'address': addr, + 'port': port, + 'protocol': protocol, + 'vrf_id': vrf_id, + 'is_in': is_in}) + else: + return self.api( + self.papi.nat44_del_session, + {'address': addr, + 'port': port, + 'protocol': protocol, + 'vrf_id': vrf_id, + 'is_in': is_in, + 'ext_host_valid': 1, + 'ext_host_address': ext_host_address, + 'ext_host_port': ext_host_port}) def nat44_forwarding_enable_disable( self, @@ -2263,6 +2342,9 @@ class VppPapiProvider(object): 'is_ipv6': is_ip6, }) + def dhcp_client_dump(self): + return self.api(self.papi.dhcp_client_dump, {}) + def dhcp_client(self, sw_if_index, hostname, @@ -2273,13 +2355,14 @@ class VppPapiProvider(object): return self.api( self.papi.dhcp_client_config, { - 'sw_if_index': sw_if_index, - 'hostname': hostname, - 'client_id': client_id, 'is_add': is_add, - 'want_dhcp_event': want_dhcp_events, - 'set_broadcast_flag': set_broadcast_flag, - 'pid': os.getpid(), + 'client': { + 'sw_if_index': sw_if_index, + 'hostname': hostname, + 'id': client_id, + 'want_dhcp_event': want_dhcp_events, + 'set_broadcast_flag': set_broadcast_flag, + 'pid': os.getpid()} }) def ip_mroute_add_del(self, @@ -2289,6 +2372,7 @@ class VppPapiProvider(object): e_flags, next_hop_afi, next_hop_sw_if_index, + next_hop_address, i_flags, bier_imp=0, rpf_id=0, @@ -2313,7 +2397,8 @@ class VppPapiProvider(object): 'next_hop_afi': next_hop_afi, 'grp_address_length': grp_address_length, 'grp_address': grp_address, - 'src_address': src_address}) + 'src_address': src_address, + 'nh_address': next_hop_address}) def mfib_signal_dump(self): return self.api(self.papi.mfib_signal_dump, {}) @@ -3040,9 +3125,8 @@ class VppPapiProvider(object): :returns: reply from the API """ return self.api( - self.papi.ipsec_interface_add_del_spd, { - 'spd_id': spd_id, - 'sw_if_index': sw_if_index, 'is_add': is_add}) + self.papi.ipsec_interface_add_del_spd, + {'spd_id': spd_id, 'sw_if_index': sw_if_index, 'is_add': is_add}) def ipsec_sad_add_del_entry(self, sad_id, @@ -3057,7 +3141,8 @@ class VppPapiProvider(object): crypto_key_length=0, crypto_key='JPjyOWBeVEQiMe7h', is_add=1, - is_tunnel=1): + is_tunnel=1, + udp_encap=0): """ IPSEC SA add/del Sample CLI : 'ipsec sa add 10 spi 1001 esp \ crypto-key 4a506a794f574265564551694d653768 \ @@ -3110,7 +3195,8 @@ class VppPapiProvider(object): 'crypto_key_length': crypto_key_length, 'crypto_key': crypto_key, 'is_add': is_add, - 'is_tunnel': is_tunnel}) + 'is_tunnel': is_tunnel, + 'udp_encap': udp_encap}) def ipsec_spd_add_del_entry(self, spd_id, @@ -3237,6 +3323,59 @@ class VppPapiProvider(object): """ GBP endpoint Dump """ return self.api(self.papi.gbp_endpoint_dump, {}) + def gbp_endpoint_group_add_del(self, is_add, epg, bd, + ip4_rd, + ip6_rd, + uplink_sw_if_index): + """ GBP endpoint group Add/Del """ + return self.api(self.papi.gbp_endpoint_group_add_del, + {'is_add': is_add, + 'epg': { + 'uplink_sw_if_index': uplink_sw_if_index, + 'bd_id': bd, + 'ip4_table_id': ip4_rd, + 'ip6_table_id': ip6_rd, + 'epg_id': epg}}) + + def gbp_endpoint_group_dump(self): + """ GBP endpoint group Dump """ + return self.api(self.papi.gbp_endpoint_group_dump, {}) + + def gbp_recirc_add_del(self, is_add, sw_if_index, epg, is_ext): + """ GBP recirc Add/Del """ + return self.api(self.papi.gbp_recirc_add_del, + {'is_add': is_add, + 'recirc': { + 'is_ext': is_ext, + 'sw_if_index': sw_if_index, + 'epg_id': epg}}) + + def gbp_recirc_dump(self): + """ GBP recirc Dump """ + return self.api(self.papi.gbp_recirc_dump, {}) + + def gbp_subnet_add_del(self, is_add, table_id, + is_internal, + addr, addr_len, + sw_if_index=0xffffffff, + epg_id=0xffffffff, + is_ip6=False): + """ GBP Subnet Add/Del """ + return self.api(self.papi.gbp_subnet_add_del, + {'is_add': is_add, + 'subnet': { + 'is_internal': is_internal, + 'is_ip6': is_ip6, + 'sw_if_index': sw_if_index, + 'epg_id': epg_id, + 'address': addr, + 'address_length': addr_len, + 'table_id': table_id}}) + + def gbp_subnet_dump(self): + """ GBP Subnet Dump """ + return self.api(self.papi.gbp_subnet_dump, {}) + def gbp_contract_add_del(self, is_add, src_epg, dst_epg, acl_index): """ GBP contract Add/Del """ return self.api(self.papi.gbp_contract_add_del, @@ -3269,14 +3408,15 @@ class VppPapiProvider(object): {'sw_if_index': sw_if_index}) def ipip_add_tunnel(self, src_address, dst_address, is_ipv6=1, - instance=0xFFFFFFFF, fib_index=0): + instance=0xFFFFFFFF, fib_index=0, tc_tos=0): """ IPIP tunnel Add/Del """ return self.api(self.papi.ipip_add_tunnel, {'is_ipv6': is_ipv6, 'instance': instance, 'src_address': src_address, 'dst_address': dst_address, - 'fib_index': fib_index}) + 'fib_index': fib_index, + 'tc_tos': tc_tos}) def ipip_del_tunnel(self, sw_if_index): """ IPIP tunnel Delete """ @@ -3422,3 +3562,69 @@ class VppPapiProvider(object): """ return self.api(self.papi.sw_interface_bond_dump, {}) + + def create_vhost_user_if( + self, + is_server, + sock_filename, + renumber, + custom_dev_instance, + use_custom_mac, + mac_address, + tag=''): + """ + :param is_server: is server + :param sock_filename: socket name + :param renumber: renumber + :param custom_dev_instance: custom dev instance + :param use_custom_mac: use custom mac + :param mac_address: mac address + :param tag: tag (default '' + """ + return self.api( + self.papi.create_vhost_user_if, + {'is_server': is_server, + 'sock_filename': sock_filename, + 'renumber': renumber, + 'custom_dev_instance': custom_dev_instance, + 'use_custom_mac': use_custom_mac, + 'mac_address': mac_address, + 'tag': tag + }) + + def delete_vhost_user_if( + self, + sw_if_index): + """ + :param sw_if_index: interface the operation is applied to + """ + return self.api(self.papi.delete_vhost_user_if, + {'sw_if_index': sw_if_index, }) + + def sw_interface_vhost_user_dump( + self): + """ + + """ + return self.api(self.papi.sw_interface_vhost_user_dump, + {}) + + def abf_policy_add_del(self, is_add, policy): + return self.api( + self.papi.abf_policy_add_del, + {'is_add': is_add, + 'policy': policy}) + + def abf_itf_attach_add_del(self, is_add, attach): + return self.api( + self.papi.abf_itf_attach_add_del, + {'is_add': is_add, + 'attach': attach}) + + def abf_policy_dump(self): + return self.api( + self.papi.abf_policy_dump, {}) + + def abf_itf_attach_dump(self): + return self.api( + self.papi.abf_itf_attach_dump, {})