session: instantiate appns lookup table only once 70/9070/2
authorFlorin Coras <fcoras@cisco.com>
Thu, 26 Oct 2017 21:25:12 +0000 (14:25 -0700)
committerChris Luke <chris_luke@comcast.com>
Fri, 27 Oct 2017 17:49:37 +0000 (17:49 +0000)
Change-Id: I39d634b7691a524e5221c28997a737102298c281
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/vnet/session/application_namespace.c
src/vnet/session/session_test.c

index a827551..f66dc27 100644 (file)
@@ -89,15 +89,16 @@ vnet_app_namespace_add_del (vnet_app_namespace_add_del_args_t * a)
        return clib_error_return_code (0, VNET_API_ERROR_INVALID_VALUE, 0,
                                       "sw_if_index or fib_id must be "
                                       "configured");
-      st = session_table_alloc ();
-      session_table_init (st);
-
       app_ns = app_namespace_get_from_id (a->ns_id);
       if (!app_ns)
-       app_ns = app_namespace_alloc (a->ns_id);
+       {
+         app_ns = app_namespace_alloc (a->ns_id);
+         st = session_table_alloc ();
+         session_table_init (st);
+         app_ns->local_table_index = session_table_index (st);
+       }
       app_ns->ns_secret = a->secret;
       app_ns->sw_if_index = a->sw_if_index;
-      app_ns->local_table_index = session_table_index (st);
       app_ns->ip4_fib_index =
        fib_table_find (FIB_PROTOCOL_IP4, a->ip4_fib_id);
       app_ns->ip6_fib_index =
@@ -140,8 +141,10 @@ void
 app_namespaces_init (void)
 {
   u8 *ns_id = format (0, "default");
-  app_namespace_lookup_table =
-    hash_create_vec (0, sizeof (u8), sizeof (uword));
+
+  if (!app_namespace_lookup_table)
+    app_namespace_lookup_table =
+      hash_create_vec (0, sizeof (u8), sizeof (uword));
 
   /*
    * Allocate default namespace
index 433c20e..986837c 100644 (file)
@@ -227,6 +227,7 @@ session_test_namespace (vlib_main_t * vm, unformat_input_t * input)
                "server shouldn't have access to local table");
 
   unbind_args.app_index = server_index;
+  unbind_args.handle = bind_args.handle;
   error = vnet_unbind (&unbind_args);
   SESSION_TEST ((error == 0), "unbind should work");