X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvpp%2Fapi%2Fapi_main.c;h=9b915eeffcf2b4b27ec5701f3f25ebdcc87aeae3;hb=f0e67d78ae23ff3d5751ea10e9e76cb6e81ba4a5;hp=97dec9e1542955b4c2a7a808f5e62c385ca6e3ae;hpb=2e55823af6c1cc6856e4a1f2cea659170bd76fb7;p=vpp.git diff --git a/src/vpp/api/api_main.c b/src/vpp/api/api_main.c index 97dec9e1542..9b915eeffcf 100644 --- a/src/vpp/api/api_main.c +++ b/src/vpp/api/api_main.c @@ -1,4 +1,6 @@ #include "vat.h" +#include +#include vat_main_t vat_main; @@ -93,6 +95,30 @@ vat_plugin_hash_create (void) vam->help_by_name = hash_create_string (0, sizeof (uword)); } +static void +vat_register_interface_dump (vat_main_t *vam) +{ + void *handle; + plugin_info_t *pi; + + vec_foreach (pi, vat_plugin_main.plugin_info) + { + handle = dlsym (pi->handle, "api_sw_interface_dump"); + if (handle) + { + vam->api_sw_interface_dump = handle; + break; + } + } + + if (!vam->api_sw_interface_dump) + { + fformat (stderr, + "sw_interface_dump not found in interface_test plugin!\n"); + exit (1); + } +} + static void maybe_register_api_client (vat_main_t * vam) { @@ -130,7 +156,8 @@ maybe_register_api_client (vat_main_t * vam) am->shmem_hdr->application_restarts); vam->vl_input_queue = am->shmem_hdr->vl_input_queue; - api_sw_interface_dump (vam); + vat_register_interface_dump (vam); + vam->api_sw_interface_dump (vam); } static clib_error_t * @@ -234,7 +261,7 @@ api_command_fn (vlib_main_t * vm, if (vam->regenerate_interface_table) { vam->regenerate_interface_table = 0; - api_sw_interface_dump (vam); + vam->api_sw_interface_dump (vam); } unformat_free (vam->input); return 0;