From 59b2565cd91a67ced650739f36129650830211ac Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Sun, 10 Sep 2017 15:04:27 -0400 Subject: Repair vlib API socket server - Teach vpp_api_test to send/receive API messages over sockets - Add memfd-based shared memory - Add api messages to create memfd-based shared memory segments - vpp_api_test supports both socket and shared memory segment connections - vpp_api_test pivot from socket to shared memory API messaging - add socket client support to libvlibclient.so - dead client reaper sends ping messages, container-friendly - dead client reaper falls back to kill (, 0) live checking if e.g. a python app goes silent for tens of seconds - handle ping messages in python client support code - teach show api ring about pairwise shared-memory segments - fix ip probing of already resolved destinations (VPP-998) We'll need this work to implement proper host-stack client isolation Change-Id: Ic23b65f75c854d0393d9a2e9d6b122a9551be769 Signed-off-by: Dave Barach Signed-off-by: Dave Wallace Signed-off-by: Florin Coras --- src/vnet/lisp-cp/control.c | 2 ++ src/vnet/lisp-cp/lisp_api.c | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src/vnet/lisp-cp') diff --git a/src/vnet/lisp-cp/control.c b/src/vnet/lisp-cp/control.c index 0d6d453de00..d09be405011 100644 --- a/src/vnet/lisp-cp/control.c +++ b/src/vnet/lisp-cp/control.c @@ -1380,6 +1380,7 @@ vnet_lisp_del_mapping (gid_address_t * eid, u32 * res_map_index) mapping_t *old_map; u32 mi; + memset (ls_args, 0, sizeof (ls_args[0])); memset (m_args, 0, sizeof (m_args[0])); if (res_map_index) res_map_index[0] = ~0; @@ -1784,6 +1785,7 @@ get_locator_set_index (vnet_lisp_add_del_locator_set_args_t * a, uword * p) /* find locator-set */ if (a->local) { + ASSERT (a->name); p = hash_get_mem (lcm->locator_set_index_by_name, a->name); } else diff --git a/src/vnet/lisp-cp/lisp_api.c b/src/vnet/lisp-cp/lisp_api.c index f7c41971061..3053611c611 100644 --- a/src/vnet/lisp-cp/lisp_api.c +++ b/src/vnet/lisp-cp/lisp_api.c @@ -128,6 +128,7 @@ vl_api_lisp_add_del_locator_set_t_handler (vl_api_lisp_add_del_locator_set_t * memset (a, 0, sizeof (a[0])); + mp->locator_set_name[63] = 0; locator_name = format (0, "%s", mp->locator_set_name); a->name = locator_name; @@ -182,6 +183,7 @@ vl_api_lisp_add_del_locator_t_handler (vl_api_lisp_add_del_locator_t * mp) locator.local = 1; vec_add1 (locators, locator); + mp->locator_set_name[63] = 0; locator_name = format (0, "%s", mp->locator_set_name); a->name = locator_name; @@ -248,6 +250,7 @@ vl_api_lisp_add_del_local_eid_t_handler (vl_api_lisp_add_del_local_eid_t * mp) if (rv) goto out; + mp->locator_set_name[63] = 0; name = format (0, "%s", mp->locator_set_name); p = hash_get_mem (lcm->locator_set_index_by_name, name); if (!p) @@ -476,6 +479,7 @@ static void u8 *locator_set_name = NULL; vnet_lisp_add_del_mreq_itr_rloc_args_t _a, *a = &_a; + mp->locator_set_name[63] = 0; locator_set_name = format (0, "%s", mp->locator_set_name); a->is_add = mp->is_add; @@ -510,6 +514,7 @@ static void if (!mp->is_add) { vnet_lisp_add_del_adjacency_args_t _a, *a = &_a; + memset (a, 0, sizeof (*a)); gid_address_copy (&a->reid, eid); a->is_add = 0; rv = vnet_lisp_add_del_adjacency (a); @@ -533,7 +538,9 @@ static void rv = vnet_lisp_add_mapping (m_args, rlocs, NULL, NULL); } else - rv = vnet_lisp_del_mapping (eid, NULL); + { + rv = vnet_lisp_del_mapping (eid, NULL); + } if (mp->del_all) vnet_lisp_clear_all_remote_adjacencies (); -- cgit 1.2.3-korg