aboutsummaryrefslogtreecommitdiffstats
path: root/vpp
diff options
context:
space:
mode:
authorAndrej Kozemcak <akozemca@cisco.com>2016-06-20 08:47:57 +0200
committerFlorin Coras <florin.coras@gmail.com>2016-07-28 10:40:56 +0000
commitd983118bf6a5c5f09941946083e654f994b579fb (patch)
tree77beac152838edae3c57736f6adeacda75961bff /vpp
parent5b43fd45b3af28e58e297209e6b5e937a991c1e4 (diff)
Edit Lisp locator_set API
Change the output format of lisp locator_set API. Create new API for lisp locator. Change lisp_enable_disable_status_dump -> show_lisp_status, not use dump function. Change-Id: Ie2024cbf5e55b22ba077266220bf8584d5cac07a Signed-off-by: Andrej Kozemcak <akozemca@cisco.com>
Diffstat (limited to 'vpp')
-rw-r--r--vpp/vpp-api/api.c174
-rw-r--r--vpp/vpp-api/vpe.api85
2 files changed, 180 insertions, 79 deletions
diff --git a/vpp/vpp-api/api.c b/vpp/vpp-api/api.c
index 076d16a3..1f630651 100644
--- a/vpp/vpp-api/api.c
+++ b/vpp/vpp-api/api.c
@@ -265,6 +265,7 @@ _(SW_INTERFACE_IP6_SET_LINK_LOCAL_ADDRESS, \
_(SW_INTERFACE_SET_UNNUMBERED, sw_interface_set_unnumbered) \
_(CREATE_LOOPBACK, create_loopback) \
_(CONTROL_PING, control_ping) \
+_(NOPRINT_CONTROL_PING, noprint_control_ping) \
_(CLI_REQUEST, cli_request) \
_(SET_ARP_NEIGHBOR_LIMIT, set_arp_neighbor_limit) \
_(L2_PATCH_ADD_DEL, l2_patch_add_del) \
@@ -339,12 +340,12 @@ _(LISP_ADD_DEL_ADJACENCY, lisp_add_del_adjacency) \
_(LISP_PITR_SET_LOCATOR_SET, lisp_pitr_set_locator_set) \
_(LISP_EID_TABLE_ADD_DEL_MAP, lisp_eid_table_add_del_map) \
_(LISP_LOCATOR_SET_DUMP, lisp_locator_set_dump) \
+_(LISP_LOCATOR_DUMP, lisp_locator_dump) \
_(LISP_LOCAL_EID_TABLE_DUMP, lisp_local_eid_table_dump) \
_(LISP_GPE_TUNNEL_DUMP, lisp_gpe_tunnel_dump) \
_(LISP_MAP_RESOLVER_DUMP, lisp_map_resolver_dump) \
_(LISP_EID_TABLE_MAP_DUMP, lisp_eid_table_map_dump) \
-_(LISP_ENABLE_DISABLE_STATUS_DUMP, \
- lisp_enable_disable_status_dump) \
+_(SHOW_LISP_STATUS, show_lisp_status) \
_(LISP_ADD_DEL_MAP_REQUEST_ITR_RLOCS, \
lisp_add_del_map_request_itr_rlocs) \
_(LISP_GET_MAP_REQUEST_ITR_RLOCS, lisp_get_map_request_itr_rlocs) \
@@ -3345,6 +3346,18 @@ static void vl_api_control_ping_t_handler
}));
}
+static void vl_api_noprint_control_ping_t_handler
+(vl_api_noprint_control_ping_t *mp)
+{
+ vl_api_noprint_control_ping_reply_t * rmp;
+ int rv = 0;
+
+ REPLY_MACRO2(VL_API_NOPRINT_CONTROL_PING_REPLY,
+ ({
+ rmp->vpe_pid = ntohl (getpid());
+ }));
+}
+
static void shmem_cli_output (uword arg, u8 * buffer, uword buffer_bytes)
{
u8 **shmem_vecp = (u8 **)arg;
@@ -5116,23 +5129,6 @@ typedef CLIB_PACKED(struct
}) rloc_t;
static void
-send_lisp_locator_set_details_set_address
-(vl_api_lisp_locator_set_details_t *rmp,
- gid_address_t *gid_address)
-{
- ip_prefix_t *ip_addr;
-
- if (gid_address_type(gid_address) != GID_ADDR_IP_PREFIX) {
- return;
- }
-
- ip_addr = &gid_address_ippref(gid_address);
- rmp->prefix_len = ip_prefix_len(ip_addr);
- rmp->is_ipv6 = ip_prefix_version(ip_addr);
- ip_address_copy_addr(rmp->ip_address, &ip_prefix_addr(ip_addr));
-}
-
-static void
vl_api_lisp_add_del_remote_mapping_t_handler (
vl_api_lisp_add_del_remote_mapping_t *mp)
{
@@ -5276,42 +5272,91 @@ send_reply:
}
static void
+send_lisp_locator_details (lisp_cp_main_t *lcm,
+ locator_t *loc,
+ unix_shared_memory_queue_t *q,
+ u32 context)
+{
+ vl_api_lisp_locator_details_t *rmp;
+
+ rmp = vl_msg_api_alloc (sizeof (*rmp));
+ memset (rmp, 0, sizeof (*rmp));
+ rmp->_vl_msg_id = ntohs(VL_API_LISP_LOCATOR_DETAILS);
+ rmp->context = context;
+
+ rmp->local = loc->local;
+ if (loc->local) {
+ rmp->sw_if_index = ntohl(loc->sw_if_index);
+ } else {
+ rmp->is_ipv6 = gid_address_ip_version(&loc->address);
+ ip_address_copy_addr(rmp->ip_address, &gid_address_ip(&loc->address));
+ }
+ rmp->priority = loc->priority;
+ rmp->weight = loc->weight;
+
+ vl_msg_api_send_shmem (q, (u8 *)&rmp);
+}
+
+static void
+vl_api_lisp_locator_dump_t_handler (vl_api_lisp_locator_dump_t *mp)
+{
+ unix_shared_memory_queue_t * q = 0;
+ lisp_cp_main_t * lcm = vnet_lisp_cp_get_main();
+ locator_set_t * lsit = 0;
+ locator_t * loc = 0;
+ u32 ls_index = ~0, * locit = 0;
+ u8 filter;
+
+ q = vl_api_client_index_to_input_queue (mp->client_index);
+ if (q == 0) {
+ return;
+ }
+
+ ls_index = htonl(mp->locator_set_index);
+
+ lsit = pool_elt_at_index(lcm->locator_set_pool, ls_index);
+
+ filter = mp->filter;
+ if (filter && !((1 == filter && lsit->local) ||
+ (2 == filter && !lsit->local))) {
+ return;
+ }
+
+ vec_foreach(locit, lsit->locator_indices) {
+ loc = pool_elt_at_index(lcm->locator_pool, locit[0]);
+ send_lisp_locator_details(lcm, loc, q, mp->context);
+ };
+}
+
+static void
send_lisp_locator_set_details (lisp_cp_main_t *lcm,
locator_set_t *lsit,
unix_shared_memory_queue_t *q,
u32 context,
- u32 index)
+ u32 ls_index)
{
vl_api_lisp_locator_set_details_t *rmp;
- locator_t *loc = NULL;
- u32 * locit = NULL;
- u8 * str = NULL;
+ u8 * str = 0;
- vec_foreach (locit, lsit->locator_indices) {
- loc = pool_elt_at_index (lcm->locator_pool, locit[0]);
- rmp = vl_msg_api_alloc (sizeof (*rmp));
- memset (rmp, 0, sizeof (*rmp));
- rmp->_vl_msg_id = ntohs(VL_API_LISP_LOCATOR_SET_DETAILS);
- rmp->local = lsit->local;
- if (lsit->local) {
- ASSERT(lsit->name != NULL);
- strncpy((char *) rmp->locator_set_name,
- (char *) lsit->name, ARRAY_LEN(rmp->locator_set_name) - 1);
- rmp->sw_if_index = htonl(loc->sw_if_index);
- } else {
- str = format(0, "remote-%d", index);
- strncpy((char *) rmp->locator_set_name, (char *) str,
- ARRAY_LEN(rmp->locator_set_name) - 1);
- send_lisp_locator_set_details_set_address(rmp, &loc->address);
-
- vec_free(str);
- }
- rmp->priority = loc->priority;
- rmp->weight = loc->weight;
- rmp->context = context;
+ rmp = vl_msg_api_alloc (sizeof (*rmp));
+ memset (rmp, 0, sizeof (*rmp));
+ rmp->_vl_msg_id = ntohs(VL_API_LISP_LOCATOR_SET_DETAILS);
+ rmp->context = context;
- vl_msg_api_send_shmem (q, (u8 *)&rmp);
+ rmp->local = lsit->local;
+ rmp->locator_set_index= htonl(ls_index);
+ if (lsit->local) {
+ ASSERT(lsit->name != NULL);
+ strncpy((char *) rmp->locator_set_name,
+ (char *) lsit->name, ARRAY_LEN(rmp->locator_set_name) - 1);
+ } else {
+ str = format(0, "remote-%d", ls_index);
+ strncpy((char *) rmp->locator_set_name, (char *) str,
+ ARRAY_LEN(rmp->locator_set_name) - 1);
+ vec_free(str);
}
+
+ vl_msg_api_send_shmem (q, (u8 *)&rmp);
}
static void
@@ -5321,15 +5366,23 @@ vl_api_lisp_locator_set_dump_t_handler (vl_api_lisp_locator_set_dump_t *mp)
lisp_cp_main_t * lcm = vnet_lisp_cp_get_main();
locator_set_t * lsit = NULL;
u32 index;
+ u8 filter;
q = vl_api_client_index_to_input_queue (mp->client_index);
if (q == 0) {
return;
}
+ filter = mp->filter;
index = 0;
pool_foreach (lsit, lcm->locator_set_pool,
({
+ if (filter && !((1 == filter && lsit->local) ||
+ (2 == filter && !lsit->local))) {
+ index++;
+ continue;
+ }
+
send_lisp_locator_set_details(lcm, lsit, q, mp->context, index++);
}));
}
@@ -5585,34 +5638,23 @@ vl_api_lisp_eid_table_map_dump_t_handler (
}
static void
-send_lisp_enable_disable_details (unix_shared_memory_queue_t *q,
- u32 context)
-{
- vl_api_lisp_enable_disable_status_details_t *rmp = NULL;
-
- rmp = vl_msg_api_alloc (sizeof (*rmp));
- memset (rmp, 0, sizeof (*rmp));
- rmp->_vl_msg_id = ntohs(VL_API_LISP_ENABLE_DISABLE_STATUS_DETAILS);
-
- rmp->gpe_status = vnet_lisp_gpe_enable_disable_status ();
- rmp->feature_status = vnet_lisp_enable_disable_status ();
- rmp->context = context;
-
- vl_msg_api_send_shmem (q, (u8 *)&rmp);
-}
-
-static void
-vl_api_lisp_enable_disable_status_dump_t_handler
-(vl_api_lisp_enable_disable_status_dump_t *mp)
+vl_api_show_lisp_status_t_handler
+(vl_api_show_lisp_status_t *mp)
{
unix_shared_memory_queue_t * q = NULL;
+ vl_api_show_lisp_status_reply_t *rmp = NULL;
+ int rv = 0;
q = vl_api_client_index_to_input_queue (mp->client_index);
if (q == 0) {
return;
}
- send_lisp_enable_disable_details(q, mp->context);
+ REPLY_MACRO2(VL_API_SHOW_LISP_STATUS_REPLY,
+ ({
+ rmp->gpe_status = vnet_lisp_gpe_enable_disable_status ();
+ rmp->feature_status = vnet_lisp_enable_disable_status ();
+ }));
}
static void
diff --git a/vpp/vpp-api/vpe.api b/vpp/vpp-api/vpe.api
index 07839495..f8cf3701 100644
--- a/vpp/vpp-api/vpe.api
+++ b/vpp/vpp-api/vpe.api
@@ -1073,6 +1073,28 @@ define control_ping_reply {
u32 vpe_pid;
};
+/** \brief Control ping from client to api server request, no print json output
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+*/
+define noprint_control_ping {
+ u32 client_index;
+ u32 context;
+};
+
+/** \brief Control ping from the client to the server response
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param retval - return code for the request
+ @param vpe_pid - the pid of the vpe, returned by the server
+*/
+define noprint_control_ping_reply {
+ u32 context;
+ i32 retval;
+ u32 client_index;
+ u32 vpe_pid;
+};
+
/** \brief Process a vpe parser cli string request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@@ -2500,31 +2522,66 @@ define lisp_eid_table_add_del_map_reply {
i32 retval;
};
+/** \brief Request for map lisp locator status
+ @param client_index - opaque cookie to identify the sender
+ @param context - sender context, to match reply w/ request
+ @param locator_set_index - index of locator_set
+ @param filter - filter type;
+ Support value:
+ 0: all locator
+ 1: local locator
+ 2: remote locator
+ */
+define lisp_locator_dump {
+ u32 client_index;
+ u32 context;
+ u32 locator_set_index;
+ u8 filter;
+};
+
/** \brief LISP locator_set status
+ @param local - if is set, then locator is local
@param locator_set_name - name of the locator_set
@param sw_if_index - sw_if_index of the locator
@param priority - locator priority
@param weight - locator weight
- */
-define lisp_locator_set_details {
+ */
+define lisp_locator_details {
u32 context;
u8 local;
- u8 locator_set_name[64];
u32 sw_if_index;
u8 is_ipv6;
u8 ip_address[16];
- u8 prefix_len;
u8 priority;
u8 weight;
};
+/** \brief LISP locator_set status
+ @param locator_set_name - name of the locator_set
+ @param local - if is set, then locator_set is local
+ @param locator_count - number of locator this stats block includes
+ @param locator - locator data
+ */
+define lisp_locator_set_details {
+ u32 context;
+ u8 local;
+ u32 locator_set_index;
+ u8 locator_set_name[64];
+};
+
/** \brief Request for locator_set summary status
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
+ @param filter - filter type;
+ Support value:
+ 0: all locator_set
+ 1: local locator_set
+ 2: remote locator_set
*/
define lisp_locator_set_dump {
u32 client_index;
u32 context;
+ u8 filter;
};
/** \brief LISP local eid table status
@@ -2631,23 +2688,25 @@ define lisp_map_resolver_dump {
u32 context;
};
-/** \brief Status of lisp-gpe protocol, enable or disable
+/** \brief Request for lisp-gpe protocol status
+ @param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
- @param is_en - enable protocol if non-zero, else disable
*/
-define lisp_enable_disable_status_details {
+define show_lisp_status{
+ u32 client_index;
u32 context;
- u8 feature_status;
- u8 gpe_status;
};
-/** \brief Request for lisp-gpe protocol status
- @param client_index - opaque cookie to identify the sender
+/** \brief Status of lisp, enable or disable
@param context - sender context, to match reply w/ request
+ @param feature_status - lisp enable if non-zero, else disable
+ @param gpe_status - lisp enable if non-zero, else disable
*/
-define lisp_enable_disable_status_dump {
- u32 client_index;
+define show_lisp_status_reply{
u32 context;
+ i32 retval;
+ u8 feature_status;
+ u8 gpe_status;
};
/** \brief Get LISP map request itr rlocs status