diff options
author | 2024-10-22 10:44:07 -0700 | |
---|---|---|
committer | 2024-11-06 18:13:01 +0000 | |
commit | e0c4e6e32d9cd4b1b2c9647cd12a2e6214986e07 (patch) | |
tree | 3b521af4895eddf2ed7ca0dcae165c2abf60cd7d /test/asf/test_session_sdl.py | |
parent | afd05739d68fe7708153687e1aa177fee4411c5f (diff) |
session: session table holding free appns index
session table may be shared among multiple appns's.
app ns add id blue secret 1 if tap0
app ns add id red secret 1 if tap0
session table holds the last added app_ns's appns_index.
If the last app_ns is deleted, session table is not free
since there is still an appns which uses the same session
table. In that case, session table is holding the free
app_ns's appns_index and it can cause problem.
The fix is to modify appns_index in session table to hold
a vector of appns_index's instead of just the appns_index
that was last added. When the app ns is deleted, remove the
deleted appns_index from the session table's vector of
appns_index's.
Type: fix
Change-Id: Ied8bc97f185071dc89b9b56656e18efbd2995131
Signed-off-by: Steven Luong <sluong@cisco.com>
Diffstat (limited to 'test/asf/test_session_sdl.py')
-rw-r--r-- | test/asf/test_session_sdl.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/test/asf/test_session_sdl.py b/test/asf/test_session_sdl.py index c03dc83ba1e..952ad10bb79 100644 --- a/test/asf/test_session_sdl.py +++ b/test/asf/test_session_sdl.py @@ -78,10 +78,10 @@ class TestSessionSDL(VppTestCase): ) # Configure namespaces - self.vapi.app_namespace_add_del_v4( + app0 = self.vapi.app_namespace_add_del_v4( namespace_id="0", sw_if_index=self.loop0.sw_if_index ) - self.vapi.app_namespace_add_del_v4( + app1 = self.vapi.app_namespace_add_del_v4( namespace_id="1", sw_if_index=self.loop1.sw_if_index ) @@ -120,8 +120,12 @@ class TestSessionSDL(VppTestCase): ) self.apply_rules(rules, is_add=1, appns_index=0) - filter = self.vapi.session_sdl_v2_dump() + filter = self.vapi.session_sdl_v3_dump() self.assertEqual(filter[0].rmt, IPv4Network(self.loop1.local_ip4 + "/32")) + self.assertEqual(len(filter[0].appns_index), 2) + self.assertEqual(filter[0].count, 2) + self.assertEqual(filter[0].appns_index[0], 0) + self.assertEqual(filter[0].appns_index[1], app0.appns_index) # irrelevant rules - add 64k entries in one API call rules = [] @@ -158,6 +162,11 @@ class TestSessionSDL(VppTestCase): self.vapi.app_namespace_add_del_v4( is_add=0, namespace_id="0", sw_if_index=self.loop0.sw_if_index ) + filter = self.vapi.session_sdl_v3_dump() + self.assertEqual(len(filter[0].appns_index), 1) + self.assertEqual(filter[0].count, 1) + self.assertEqual(filter[0].appns_index[0], 0) + self.vapi.app_namespace_add_del_v4( is_add=0, namespace_id="1", sw_if_index=self.loop1.sw_if_index ) |