summaryrefslogtreecommitdiffstats
path: root/src/vnet/session
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/session')
-rw-r--r--src/vnet/session/session.api14
-rwxr-xr-xsrc/vnet/session/session_api.c20
2 files changed, 31 insertions, 3 deletions
diff --git a/src/vnet/session/session.api b/src/vnet/session/session.api
index 6ed75efb08c..358103a4f56 100644
--- a/src/vnet/session/session.api
+++ b/src/vnet/session/session.api
@@ -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
diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c
index fb74e6bbff4..7de77ddfd34 100755
--- a/src/vnet/session/session_api.c
+++ b/src/vnet/session/session_api.c
@@ -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