vrf_id=0,
protocol=0,
twice_nat=0,
+ self_twice_nat=0,
out2in_only=0,
tag="",
is_add=1):
: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)
'vrf_id': vrf_id,
'protocol': protocol,
'twice_nat': twice_nat,
+ 'self_twice_nat': self_twice_nat,
'out2in_only': out2in_only,
'tag': tag})
protocol,
vrf_id=0,
twice_nat=0,
+ self_twice_nat=0,
out2in_only=0,
tag='',
local_num=0,
'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,
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
: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,
e_flags,
next_hop_afi,
next_hop_sw_if_index,
+ next_hop_address,
i_flags,
bier_imp=0,
rpf_id=0,
'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, {})
: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,
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 \
'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,
{'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 """
"""
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, {})