session: add app ns index to ns create api 78/9378/3
authorFlorin Coras <fcoras@cisco.com>
Fri, 10 Nov 2017 17:03:54 +0000 (09:03 -0800)
committerDave Wallace <dwallacelf@gmail.com>
Fri, 10 Nov 2017 19:50:22 +0000 (19:50 +0000)
Change-Id: I86bfe4e8b0a899cc54c9b37eeb5eec701d0baf3d
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/vat/api_format.c
src/vnet/session/session.api
src/vnet/session/session_api.c

index c75857b..43957e1 100644 (file)
@@ -5304,7 +5304,6 @@ _(p2p_ethernet_del_reply)                               \
 _(lldp_config_reply)                                    \
 _(sw_interface_set_lldp_reply)                         \
 _(tcp_configure_src_addresses_reply)                   \
-_(app_namespace_add_del_reply)                          \
 _(dns_enable_disable_reply)                             \
 _(dns_name_server_add_del_reply)                       \
 _(session_rule_add_del_reply)                          \
@@ -21463,6 +21462,41 @@ api_tcp_configure_src_addresses (vat_main_t * vam)
   return ret;
 }
 
+static void vl_api_app_namespace_add_del_reply_t_handler
+  (vl_api_app_namespace_add_del_reply_t * mp)
+{
+  vat_main_t *vam = &vat_main;
+  i32 retval = ntohl (mp->retval);
+  if (vam->async_mode)
+    {
+      vam->async_errors += (retval < 0);
+    }
+  else
+    {
+      vam->retval = retval;
+      if (retval == 0)
+       errmsg ("app ns index %d\n", ntohl (mp->appns_index));
+      vam->result_ready = 1;
+    }
+}
+
+static void vl_api_app_namespace_add_del_reply_t_handler_json
+  (vl_api_app_namespace_add_del_reply_t * mp)
+{
+  vat_main_t *vam = &vat_main;
+  vat_json_node_t node;
+
+  vat_json_init_object (&node);
+  vat_json_object_add_int (&node, "retval", ntohl (mp->retval));
+  vat_json_object_add_uint (&node, "appns_index", ntohl (mp->appns_index));
+
+  vat_json_print (vam->ofp, &node);
+  vat_json_free (&node);
+
+  vam->retval = ntohl (mp->retval);
+  vam->result_ready = 1;
+}
+
 static int
 api_app_namespace_add_del (vat_main_t * vam)
 {
index 6ed75ef..358103a 100644 (file)
@@ -348,7 +348,7 @@ autoreply define session_enable_disable {
     @param namespace_id_len - length of namespace id lower
     @param namespace_id - namespace id
 */
-autoreply define app_namespace_add_del {
+define app_namespace_add_del {
   u32 client_index;
   u32 context;
   u64 secret;
@@ -359,6 +359,18 @@ autoreply define app_namespace_add_del {
   u8 namespace_id[64];
 };
 
+/** \brief Reply for app namespace add/del
+    @param context - returned sender context, to match reply w/ request
+    @param retval - return code
+    @param appns_index - app namespace index
+*/
+define app_namespace_add_del_reply
+{
+  u32 context;
+  i32 retval;
+  u32 appns_index;
+};
+
 /** \brief add/del session rule
     @param client_index - opaque cookie to identify the sender
                           client to vpp direction only
index fb74e6b..7de77dd 100755 (executable)
@@ -748,8 +748,9 @@ static void
 vl_api_app_namespace_add_del_t_handler (vl_api_app_namespace_add_del_t * mp)
 {
   vl_api_app_namespace_add_del_reply_t *rmp;
-  u8 *ns_id = 0;
   clib_error_t *error = 0;
+  u32 appns_index = 0;
+  u8 *ns_id = 0;
   int rv = 0;
   if (!session_manager_is_enabled ())
     {
@@ -779,9 +780,24 @@ vl_api_app_namespace_add_del_t_handler (vl_api_app_namespace_add_del_t * mp)
       rv = clib_error_get_code (error);
       clib_error_report (error);
     }
+  else
+    {
+      appns_index = app_namespace_index_from_id (ns_id);
+      if (appns_index == APP_NAMESPACE_INVALID_INDEX)
+       {
+         clib_warning ("app ns lookup failed");
+         rv = VNET_API_ERROR_UNSPECIFIED;
+       }
+    }
   vec_free (ns_id);
+
+  /* *INDENT-OFF* */
 done:
-  REPLY_MACRO (VL_API_APP_NAMESPACE_ADD_DEL_REPLY);
+  REPLY_MACRO2 (VL_API_APP_NAMESPACE_ADD_DEL_REPLY, ({
+    if (!rv)
+      rmp->appns_index = clib_host_to_net_u32 (appns_index);
+  }));
+  /* *INDENT-ON* */
 }
 
 static void