diff options
Diffstat (limited to 'src/vnet/session')
-rw-r--r-- | src/vnet/session/session.api | 14 | ||||
-rwxr-xr-x | src/vnet/session/session_api.c | 20 |
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 |