summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/vat/api_format.c36
-rw-r--r--src/vnet/session/session.api14
-rwxr-xr-xsrc/vnet/session/session_api.c20
3 files changed, 66 insertions, 4 deletions
diff --git a/src/vat/api_format.c b/src/vat/api_format.c
index c75857bc111..43957e15dcc 100644
--- a/src/vat/api_format.c
+++ b/src/vat/api_format.c
@@ -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)
{
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