aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/dpdk/api
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2019-07-09 10:04:18 -0400
committerFlorin Coras <florin.coras@gmail.com>2019-07-09 15:24:41 +0000
commit21a438465ca0dee88d13d9dd9621929116c95614 (patch)
tree863a47f5c77e24b7fdee96db22080ff0db52e397 /src/plugins/dpdk/api
parent3f5ebed6ea3a024b7396afe81f895719a8286681 (diff)
vat: unload unused vat plugins
If the corresponding vpp plugin is absent, return a non-zero clib_error_t * from vat_plugin_register ("xxx plugin not loaded"). The vat plugin calls dlclose on the vat plugin, and it disappears. Depending on the plugin configuration, this can reduce the vpp virtual size by several gigabytes. Added a VAT_PLUGIN(<plugin-name>) macro to vat_helper_macros, clean up boilerplate vat_plugin_register() implementations. Fixed a number of non-standard vat_plugin_register methods. Type: refactor Change-Id: Iac908e5af7d5497c78d6aa9c3c51cdae08374045 Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/plugins/dpdk/api')
-rw-r--r--src/plugins/dpdk/api/dpdk_test.c29
1 files changed, 6 insertions, 23 deletions
diff --git a/src/plugins/dpdk/api/dpdk_test.c b/src/plugins/dpdk/api/dpdk_test.c
index 637b4016111..4594a9d3b81 100644
--- a/src/plugins/dpdk/api/dpdk_test.c
+++ b/src/plugins/dpdk/api/dpdk_test.c
@@ -77,7 +77,7 @@ _(sw_interface_set_dpdk_hqos_tctbl_reply)
foreach_standard_reply_retval_handler;
#undef _
-/*
+/*
* Table of message reply handlers, must include boilerplate handlers
* we just generated
*/
@@ -336,7 +336,7 @@ api_sw_interface_set_dpdk_hqos_tctbl (vat_main_t * vam)
return 0;
}
-/*
+/*
* List of messages that the api test plugin sends,
* and that the data plane plugin processes
*/
@@ -361,36 +361,19 @@ static void dpdk_api_hookup (vat_main_t *vam)
vl_noop_handler, \
vl_api_##n##_t_endian, \
vl_api_##n##_t_print, \
- sizeof(vl_api_##n##_t), 1);
+ sizeof(vl_api_##n##_t), 1);
foreach_vpe_api_reply_msg;
#undef _
/* API messages we can send */
#define _(n,h) hash_set_mem (vam->function_by_name, #n, api_##n);
foreach_vpe_api_msg;
-#undef _
-
+#undef _
+
/* Help strings */
#define _(n,h) hash_set_mem (vam->help_by_name, #n, h);
foreach_vpe_api_msg;
#undef _
}
-clib_error_t * vat_plugin_register (vat_main_t *vam)
-{
- dpdk_test_main_t * dm = &dpdk_test_main;
- u8 * name;
-
- dm->vat_main = vam;
-
- /* Ask the vpp engine for the first assigned message-id */
- name = format (0, "dpdk_%08x%c", api_version, 0);
- dm->msg_id_base = vl_client_get_first_plugin_msg_id ((char *) name);
-
- if (dm->msg_id_base != (u16) ~0)
- dpdk_api_hookup (vam);
-
- vec_free(name);
-
- return 0;
-}
+VAT_PLUGIN_REGISTER(dpdk);