From: Matus Fabian Date: Thu, 1 May 2025 09:04:35 +0000 (-0400) Subject: prom: return error when http_static not loaded X-Git-Tag: v25.10-rc0~49 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=0a0ba707a60b160a1f75c713b377dce746bb730e;p=vpp.git prom: return error when http_static not loaded return error if vlib_get_plugin_symbol return 0 when http_static_plugin.so is not loaded instead of crashing Type: fix Change-Id: Ic281c559c72d3c9f34bc9daae3aa55f0bb711a8a Signed-off-by: Matus Fabian --- diff --git a/src/plugins/prom/prom.c b/src/plugins/prom/prom.c index 475e98b1038..0ddc96f7474 100644 --- a/src/plugins/prom/prom.c +++ b/src/plugins/prom/prom.c @@ -382,13 +382,16 @@ prom_stat_segment_client_init (void) stat_segment_adjust (scm, (void *) scm->shared_header->directory_vector); } -void +clib_error_t * prom_enable (vlib_main_t *vm) { prom_main_t *pm = &prom_main; pm->register_url = vlib_get_plugin_symbol ("http_static_plugin.so", "hss_register_url_handler"); + if (pm->register_url == 0) + return clib_error_return (0, "http_static_plugin.so not loaded"); + pm->send_data = vlib_get_plugin_symbol ("http_static_plugin.so", "hss_session_send_data"); pm->register_url (prom_stats_dump, "stats.prom", HTTP_REQ_GET); @@ -400,6 +403,8 @@ prom_enable (vlib_main_t *vm) prom_scraper_process_enable (vm); prom_stat_segment_client_init (); + + return 0; } static clib_error_t * diff --git a/src/plugins/prom/prom.h b/src/plugins/prom/prom.h index 898e4c209d1..a06302c1ff9 100644 --- a/src/plugins/prom/prom.h +++ b/src/plugins/prom/prom.h @@ -44,7 +44,7 @@ typedef enum prom_process_evt_codes_ PROM_SCRAPER_EVT_RUN, } prom_process_evt_codes_t; -void prom_enable (vlib_main_t *vm); +clib_error_t *prom_enable (vlib_main_t *vm); prom_main_t *prom_get_main (void); void prom_stat_patterns_set (u8 **patterns); diff --git a/src/plugins/prom/prom_cli.c b/src/plugins/prom/prom_cli.c index 705e54ac1b8..09407d46235 100644 --- a/src/plugins/prom/prom_cli.c +++ b/src/plugins/prom/prom_cli.c @@ -131,7 +131,7 @@ prom_command_fn (vlib_main_t *vm, unformat_input_t *input, no_input: if (is_enable && !pm->is_enabled) - prom_enable (vm); + return prom_enable (vm); return 0; }