session: allow listen in any fib if default namespace 65/33065/4
authorFlorin Coras <fcoras@cisco.com>
Thu, 8 Jul 2021 15:25:09 +0000 (08:25 -0700)
committerDave Barach <openvpp@barachs.net>
Thu, 8 Jul 2021 21:43:34 +0000 (21:43 +0000)
Type: fix

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: If0712f01bdd6f2fc892bcbe4e2cee28affd02520

src/vnet/session/application.c
src/vnet/session/session_lookup.c
src/vnet/session/session_lookup.h

index 8a304f9..d7c5980 100644 (file)
@@ -241,9 +241,9 @@ app_listener_alloc_and_init (application_t * app,
        {
          fib_protocol_t fib_proto;
          fib_proto = session_endpoint_fib_proto ((session_endpoint_t *) sep);
-         table_index = session_lookup_get_index_for_fib (fib_proto,
-                                                         sep->fib_index);
-         ASSERT (table_index != SESSION_TABLE_INVALID_INDEX);
+         /* Assume namespace vetted previously so make sure table exists */
+         table_index = session_lookup_get_or_alloc_index_for_fib (
+           fib_proto, sep->fib_index);
          session_lookup_add_session_endpoint (table_index,
                                               (session_endpoint_t *) sep,
                                               lh);
index 3b33098..6e060cb 100644 (file)
@@ -214,6 +214,14 @@ session_lookup_get_index_for_fib (u32 fib_proto, u32 fib_index)
   return fib_index_to_table_index[fib_proto][fib_index];
 }
 
+u32
+session_lookup_get_or_alloc_index_for_fib (u32 fib_proto, u32 fib_index)
+{
+  session_table_t *st;
+  st = session_table_get_or_alloc (fib_proto, fib_index);
+  return session_table_index (st);
+}
+
 /**
  * Add transport connection to a session table
  *
index 4e80566..c1037df 100644 (file)
@@ -92,6 +92,7 @@ transport_connection_t *session_lookup_half_open_connection (u64 handle,
                                                             u8 proto,
                                                             u8 is_ip4);
 u32 session_lookup_get_index_for_fib (u32 fib_proto, u32 fib_index);
+u32 session_lookup_get_or_alloc_index_for_fib (u32 fib_proto, u32 fib_index);
 
 void session_lookup_show_table_entries (vlib_main_t * vm,
                                        session_table_t * table, u8 type,