From 6bc8c6493c8e7e1401130f8c9ca34c9b2915a7ad Mon Sep 17 00:00:00 2001 From: Martin Gálik Date: Wed, 19 Apr 2017 01:12:27 -0700 Subject: CGNAT: close session API and CLI commands. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I9c8636bd2c4b8da2907e8e4a4f2be1a2c3a8e0bb Signed-off-by: Martin Gálik --- test/test_snat.py | 15 +++++++++++++++ test/vpp_papi_provider.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) (limited to 'test') diff --git a/test/test_snat.py b/test/test_snat.py index ace17237..fe5af418 100644 --- a/test/test_snat.py +++ b/test/test_snat.py @@ -1686,6 +1686,21 @@ class TestDeterministicNAT(MethodHolder): self.logger.error(ppp("Unexpected or invalid packet", p)) raise + # session close api test + self.vapi.snat_det_close_session_out(socket.inet_aton(nat_ip), + external_port1, + self.pg1.remote_ip4n, + port_out) + dms = self.vapi.snat_det_map_dump() + self.assertEqual(dms[0].ses_num, 1) + + self.vapi.snat_det_close_session_in(host0.ip4n, + port_in, + self.pg1.remote_ip4n, + port_out) + dms = self.vapi.snat_det_map_dump() + self.assertEqual(dms[0].ses_num, 0) + def test_tcp_session_close_detection_in(self): """ CGNAT TCP session close initiated from inside network """ self.vapi.snat_add_det_map(self.pg0.remote_ip4n, diff --git a/test/vpp_papi_provider.py b/test/vpp_papi_provider.py index 4541f01a..a485cefc 100644 --- a/test/vpp_papi_provider.py +++ b/test/vpp_papi_provider.py @@ -1226,6 +1226,52 @@ class VppPapiProvider(object): """ 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 control_ping(self): self.api(self.papi.control_ping) -- cgit 1.2.3-korg