- self.papi.snat_add_address_range,
- {'is_ip4': is_ip4,
- 'first_ip_address': first_ip_address,
- 'last_ip_address': last_ip_address,
- 'vrf_id': vrf_id,
- 'is_add': is_add})
-
- def snat_address_dump(self):
- """Dump S-NAT addresses
- :return: Dictionary of S-NAT addresses
- """
- return self.api(self.papi.snat_address_dump, {})
-
- def snat_interface_dump(self):
- """Dump interfaces with S-NAT feature
- :return: Dictionary of interfaces with S-NAT feature
- """
- return self.api(self.papi.snat_interface_dump, {})
-
- def snat_static_mapping_dump(self):
- """Dump S-NAT static mappings
- :return: Dictionary of S-NAT static mappings
- """
- return self.api(self.papi.snat_static_mapping_dump, {})
-
- def snat_show_config(self):
- """Show S-NAT config
- :return: S-NAT config parameters
- """
- return self.api(self.papi.snat_show_config, {})
-
- def snat_add_interface_addr(
- self,
- sw_if_index,
- is_add=1):
- """Add/del S-NAT 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.snat_add_del_interface_addr,
- {'is_add': is_add, 'sw_if_index': sw_if_index})
-
- def snat_interface_addr_dump(self):
- """Dump S-NAT addresses interfaces
- :return: Dictionary of S-NAT addresses interfaces
- """
- return self.api(self.papi.snat_interface_addr_dump, {})
-
- def snat_ipfix(
- self,
- domain_id=1,
- src_port=4739,
- enable=1):
- """Enable/disable S-NAT IPFIX logging
-
- :param domain_id: Observation domain ID (Default value = 1)
- :param src_port: Source port number (Default value = 4739)
- :param enable: 1 if enable, 0 if disable (Default value = 1)
- """
- return self.api(
- self.papi.snat_ipfix_enable_disable,
- {'domain_id': domain_id,
- 'src_port': src_port,
- 'enable': enable})
-
- def snat_user_session_dump(
- self,
- ip_address,
- vrf_id,
- is_ip4=1):
- """Dump S-NAT user's sessions
-
- :param ip_address: ip adress of the user to be dumped
- :param cpu_index: cpu_index on which the user is
- :param vrf_id: VRF ID
- :return: Dictionary of S-NAT sessions
- """
- return self.api(
- self.papi.snat_user_session_dump,
- {'ip_address': ip_address,
- 'vrf_id': vrf_id,
- 'is_ip4': is_ip4})
-
- def snat_user_dump(self):
- """Dump S-NAT users
-
- :return: Dictionary of S-NAT users
- """
- return self.api(self.papi.snat_user_dump, {})
-
- def snat_add_det_map(
- self,
- in_addr,
- in_plen,
- out_addr,
- out_plen,
- is_add=1):
- """Add/delete S-NAT deterministic mapping
-
- :param is_add - 1 if add, 0 if delete
- :param in_addr - inside IP address
- :param in_plen - inside IP address prefix length
- :param out_addr - outside IP address
- :param out_plen - outside IP address prefix length
- """
- return self.api(
- self.papi.snat_add_det_map,
- {'is_add': is_add,
- 'in_addr': in_addr,
- 'in_plen': in_plen,
- 'out_addr': out_addr,
- 'out_plen': out_plen})
-
- def snat_det_forward(
- self,
- in_addr):
- """Get outside address and port range from inside address
-
- :param in_addr - inside IP address
- """
- return self.api(
- self.papi.snat_det_forward,
- {'in_addr': in_addr})
-
- def snat_det_reverse(
- self,
- out_addr,
- out_port):
- """Get inside address from outside address and port
-
- :param out_addr - outside IP address
- :param out_port - outside port
- """
- return self.api(
- self.papi.snat_det_reverse,
- {'out_addr': out_addr,
- 'out_port': out_port})
-
- def snat_det_map_dump(self):
- """Dump S-NAT deterministic mappings
-
- :return: Dictionary of S-NAT deterministic mappings
- """
- return self.api(self.papi.snat_det_map_dump, {})
-
- def snat_det_set_timeouts(
- self,
- udp=300,
- tcp_established=7440,
- tcp_transitory=240,
- icmp=60):
- """Set values of timeouts for deterministic NAT (in seconds)
-
- :param udp - UDP timeout (Default value = 300)
- :param tcp_established - TCP established timeout (Default value = 7440)
- :param tcp_transitory - TCP transitory timeout (Default value = 240)
- :param icmp - ICMP timeout (Default value = 60)
- """
- return self.api(
- self.papi.snat_det_set_timeouts,
- {'udp': udp,
- 'tcp_established': tcp_established,
- 'tcp_transitory': tcp_transitory,
- 'icmp': icmp})
-
- def snat_det_get_timeouts(self):
- """Get values of timeouts for deterministic NAT
-
- :return: Timeouts for deterministic NAT (in seconds)
- """
- return self.api(self.papi.snat_det_get_timeouts, {})
-
- def snat_det_close_session_out(
- self,
- out_addr,
- out_port,
- ext_addr,
- ext_port,
- is_ip4=1):
- """Close CGN session using outside address and port
-
- :param out_addr - outside IP address
- :param out_port - outside port
- :param ext_addr - external host IP address
- :param ext_port - external host port
- :param is_ip4: 1 if address type is IPv4 (Default value = 1)
- """
- return self.api(
- self.papi.snat_det_close_session_out,
- {'out_addr': out_addr,
- 'out_port': out_port,
- 'ext_addr': ext_addr,
- 'ext_port': ext_port,
- 'is_ip4': is_ip4})
-
- def snat_det_close_session_in(
- self,
- in_addr,
- in_port,
- ext_addr,
- ext_port,
- is_ip4=1):
- """Close CGN session using inside address and port
-
- :param in_addr - inside IP address
- :param in_port - inside port
- :param ext_addr - external host IP address
- :param ext_port - external host port
- :param is_ip4: 1 if address type is IPv4 (Default value = 1)
- """
- return self.api(
- self.papi.snat_det_close_session_in,
- {'in_addr': in_addr,
- 'in_port': in_port,
- 'ext_addr': ext_addr,
- 'ext_port': ext_port,
- 'is_ip4': is_ip4})
-
- def snat_det_session_dump(
- self,
- user_addr,
- is_ip4=1):
- """Dump S-NAT deterministic sessions belonging to a user
-
- :param user_addr - inside IP address of the user
- :param is_ip4: - 1 if address type is IPv4 (Default value = 1)
- :return: Dictionary of S-NAT deterministic sessions
- """
- return self.api(
- self.papi.snat_det_session_dump,
- {'is_ip4': is_ip4,
- 'user_addr': user_addr})
-
- def control_ping(self):
- self.api(self.papi.control_ping)
-
- def bfd_udp_add(self, sw_if_index, desired_min_tx, required_min_rx,
- detect_mult, local_addr, peer_addr, is_ipv6=0,
- bfd_key_id=None, conf_key_id=None):
- if bfd_key_id is None:
- return self.api(self.papi.bfd_udp_add,
- {
- 'sw_if_index': sw_if_index,
- 'desired_min_tx': desired_min_tx,
- 'required_min_rx': required_min_rx,
- 'local_addr': local_addr,
- 'peer_addr': peer_addr,
- 'is_ipv6': is_ipv6,
- 'detect_mult': detect_mult,
- })
- else:
- return self.api(self.papi.bfd_udp_add,
- {
- 'sw_if_index': sw_if_index,
- 'desired_min_tx': desired_min_tx,
- 'required_min_rx': required_min_rx,
- 'local_addr': local_addr,
- 'peer_addr': peer_addr,
- 'is_ipv6': is_ipv6,
- 'detect_mult': detect_mult,
- 'is_authenticated': 1,
- 'bfd_key_id': bfd_key_id,
- 'conf_key_id': conf_key_id,
- })
-
- def bfd_udp_mod(self, sw_if_index, desired_min_tx, required_min_rx,
- detect_mult, local_addr, peer_addr, is_ipv6=0):
- return self.api(self.papi.bfd_udp_mod,
- {
- 'sw_if_index': sw_if_index,
- 'desired_min_tx': desired_min_tx,
- 'required_min_rx': required_min_rx,
- 'local_addr': local_addr,
- 'peer_addr': peer_addr,
- 'is_ipv6': is_ipv6,
- 'detect_mult': detect_mult,
- })
-
- def bfd_udp_auth_activate(self, sw_if_index, local_addr, peer_addr,
- is_ipv6=0, bfd_key_id=None, conf_key_id=None,
- is_delayed=False):
- return self.api(self.papi.bfd_udp_auth_activate,
- {
- 'sw_if_index': sw_if_index,
- 'local_addr': local_addr,
- 'peer_addr': peer_addr,
- 'is_ipv6': is_ipv6,
- 'is_delayed': 1 if is_delayed else 0,
- 'bfd_key_id': bfd_key_id,
- 'conf_key_id': conf_key_id,
- })
-
- def bfd_udp_auth_deactivate(self, sw_if_index, local_addr, peer_addr,
- is_ipv6=0, is_delayed=False):
- return self.api(self.papi.bfd_udp_auth_deactivate,
- {
- 'sw_if_index': sw_if_index,
- 'local_addr': local_addr,
- 'peer_addr': peer_addr,
- 'is_ipv6': is_ipv6,
- 'is_delayed': 1 if is_delayed else 0,
- })
-
- def bfd_udp_del(self, sw_if_index, local_addr, peer_addr, is_ipv6=0):
- return self.api(self.papi.bfd_udp_del,
- {
- 'sw_if_index': sw_if_index,
- 'local_addr': local_addr,
- 'peer_addr': peer_addr,
- 'is_ipv6': is_ipv6,
- })
-
- def bfd_udp_session_dump(self):
- return self.api(self.papi.bfd_udp_session_dump, {})
-
- def bfd_udp_session_set_flags(self, admin_up_down, sw_if_index, local_addr,
- peer_addr, is_ipv6=0):
- return self.api(self.papi.bfd_udp_session_set_flags, {
- 'admin_up_down': admin_up_down,
- 'sw_if_index': sw_if_index,
- 'local_addr': local_addr,
- 'peer_addr': peer_addr,
- 'is_ipv6': is_ipv6,
- })
-
- def want_bfd_events(self, enable_disable=1):
- return self.api(self.papi.want_bfd_events, {
- 'enable_disable': enable_disable,
- 'pid': os.getpid(),
- })
-
- def bfd_auth_set_key(self, conf_key_id, auth_type, key):
- return self.api(self.papi.bfd_auth_set_key, {
- 'conf_key_id': conf_key_id,
- 'auth_type': auth_type,
- 'key': key,
- 'key_len': len(key),
- })
-
- def bfd_auth_del_key(self, conf_key_id):
- return self.api(self.papi.bfd_auth_del_key, {
- 'conf_key_id': conf_key_id,
- })
-
- def bfd_auth_keys_dump(self):
- return self.api(self.papi.bfd_auth_keys_dump, {})
-
- def bfd_udp_set_echo_source(self, sw_if_index):
- return self.api(self.papi.bfd_udp_set_echo_source,
- {'sw_if_index': sw_if_index})
-
- def bfd_udp_del_echo_source(self):
- return self.api(self.papi.bfd_udp_del_echo_source, {})
-
- def classify_add_del_table(
- self,
- is_add,
- mask,
- match_n_vectors=1,
- table_index=0xFFFFFFFF,
- nbuckets=2,
- memory_size=2097152,
- skip_n_vectors=0,
- next_table_index=0xFFFFFFFF,
- miss_next_index=0xFFFFFFFF,
- current_data_flag=0,
- current_data_offset=0):
- """
- :param is_add:
- :param mask:
- :param match_n_vectors: (Default value = 1)
- :param table_index: (Default value = 0xFFFFFFFF)
- :param nbuckets: (Default value = 2)
- :param memory_size: (Default value = 2097152)
- :param skip_n_vectors: (Default value = 0)
- :param next_table_index: (Default value = 0xFFFFFFFF)
- :param miss_next_index: (Default value = 0xFFFFFFFF)
- :param current_data_flag: (Default value = 0)
- :param current_data_offset: (Default value = 0)
- """
-
- return self.api(
- self.papi.classify_add_del_table,
- {'is_add': is_add,
- 'table_index': table_index,
- 'nbuckets': nbuckets,
- 'memory_size': memory_size,
- 'skip_n_vectors': skip_n_vectors,
- 'match_n_vectors': match_n_vectors,
- 'next_table_index': next_table_index,
- 'miss_next_index': miss_next_index,
- 'current_data_flag': current_data_flag,
- 'current_data_offset': current_data_offset,
- 'mask': mask})
-
- def classify_add_del_session(
- self,
- is_add,
- table_index,
- match,
- opaque_index=0xFFFFFFFF,
- hit_next_index=0xFFFFFFFF,
- advance=0,
- action=0,
- metadata=0):
- """
- :param is_add:
- :param table_index:
- :param match:
- :param opaque_index: (Default value = 0xFFFFFFFF)
- :param hit_next_index: (Default value = 0xFFFFFFFF)
- :param advance: (Default value = 0)
- :param action: (Default value = 0)
- :param metadata: (Default value = 0)
- """
-
- return self.api(
- self.papi.classify_add_del_session,
- {'is_add': is_add,
- 'table_index': table_index,
- 'hit_next_index': hit_next_index,
- 'opaque_index': opaque_index,
- 'advance': advance,
- 'action': action,
- 'metadata': metadata,
- 'match': match})
-
- def input_acl_set_interface(
- self,
- is_add,
- sw_if_index,
- ip4_table_index=0xFFFFFFFF,
- ip6_table_index=0xFFFFFFFF,
- l2_table_index=0xFFFFFFFF):
- """
- :param is_add:
- :param sw_if_index:
- :param ip4_table_index: (Default value = 0xFFFFFFFF)
- :param ip6_table_index: (Default value = 0xFFFFFFFF)
- :param l2_table_index: (Default value = 0xFFFFFFFF)
- """
-
- return self.api(
- self.papi.input_acl_set_interface,
- {'sw_if_index': sw_if_index,
- 'ip4_table_index': ip4_table_index,
- 'ip6_table_index': ip6_table_index,
- 'l2_table_index': l2_table_index,