From 229385955109b866a23c4ac2aa03d4d11044c39d Mon Sep 17 00:00:00 2001 From: "Enrico Loparco (eloparco)" Date: Thu, 24 Jun 2021 09:15:41 +0200 Subject: [HICN-708] Rebase with master Signed-off-by: Enrico Loparco (eloparco) Change-Id: I2122e1d61dd3b2e039972624ffbdbcb3c5610159 --- telemetry/vpp-collectd/CMakeLists.txt | 2 +- telemetry/vpp-collectd/vpp-hicn/CMakeLists.txt | 9 ++-- telemetry/vpp-collectd/vpp-hicn/vpp_hicn.c | 30 +++++++------ telemetry/vpp-collectd/vpp/CMakeLists.txt | 22 +++++----- telemetry/vpp-collectd/vpp/vpp.c | 58 ++++++++++++++------------ 5 files changed, 61 insertions(+), 60 deletions(-) (limited to 'telemetry') diff --git a/telemetry/vpp-collectd/CMakeLists.txt b/telemetry/vpp-collectd/CMakeLists.txt index ef09fb980..8f82745f2 100644 --- a/telemetry/vpp-collectd/CMakeLists.txt +++ b/telemetry/vpp-collectd/CMakeLists.txt @@ -13,7 +13,7 @@ cmake_minimum_required(VERSION 3.5 FATAL_ERROR) -set (COLLECTD_PLUGINS hicn-collectd-plugins) +set(COLLECTD_PLUGINS hicn-collectd-plugins) project(hicn-collectd-plugins) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/" "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/Modules/") diff --git a/telemetry/vpp-collectd/vpp-hicn/CMakeLists.txt b/telemetry/vpp-collectd/vpp-hicn/CMakeLists.txt index fc39b9385..3703515dc 100644 --- a/telemetry/vpp-collectd/vpp-hicn/CMakeLists.txt +++ b/telemetry/vpp-collectd/vpp-hicn/CMakeLists.txt @@ -18,7 +18,7 @@ find_package(Collectd REQUIRED) find_package(Vpp REQUIRED) if(${CMAKE_SOURCE_DIR}/vpp-collectd STREQUAL ${PROJECT_SOURCE_DIR}) - message (STATUS "not compiling in the same folder") + message (STATUS "not compiling in the same folder") find_package(HicnPlugin REQUIRED) find_package(VapiSafe REQUIRED) else() @@ -29,17 +29,16 @@ else() endif() list(APPEND SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/vpp_hicn.c -) + ${CMAKE_CURRENT_SOURCE_DIR}/vpp_hicn.c) -list (APPEND INCLUDE_DIRS +list(APPEND INCLUDE_DIRS ${COLLECTD_INCLUDE_DIRS} ${HICNPLUGIN_INCLUDE_DIRS} ${SAFE_VAPI_INCLUDE_DIRS} ${VPP_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}) -list (APPEND LIBRARIES +list(APPEND LIBRARIES ${VPP_LIBRARY_VAPICLIENT} ${SAFE_VAPI_LIBRARIES}) diff --git a/telemetry/vpp-collectd/vpp-hicn/vpp_hicn.c b/telemetry/vpp-collectd/vpp-hicn/vpp_hicn.c index 591b8f584..4228ac6e6 100644 --- a/telemetry/vpp-collectd/vpp-hicn/vpp_hicn.c +++ b/telemetry/vpp-collectd/vpp-hicn/vpp_hicn.c @@ -13,25 +13,9 @@ * limitations under the License. */ -#if !HAVE_CONFIG_H -#include -#include - -#ifndef __USE_ISOC99 /* required for NAN */ -#define DISABLE_ISOC99 1 -#define __USE_ISOC99 1 -#endif /* !defined(__USE_ISOC99) */ - -#if DISABLE_ISOC99 -#undef DISABLE_ISOC99 -#undef __USE_ISOC99 -#endif /* DISABLE_ISOC99 */ -#endif /* ! HAVE_CONFIG */ - /* Keep order as it is */ #include #include -#include #include #define counter_t vpp_counter_t @@ -42,6 +26,15 @@ DEFINE_VAPI_MSG_IDS_HICN_API_JSON vapi_ctx_t vapi_ctx; +#define STATIC_ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a))) + +#define IS_TRUE(s) \ + ((strcasecmp("true", (s)) == 0) || (strcasecmp("yes", (s)) == 0) || \ + (strcasecmp("on", (s)) == 0)) +#define IS_FALSE(s) \ + ((strcasecmp("false", (s)) == 0) || (strcasecmp("no", (s)) == 0) || \ + (strcasecmp("off", (s)) == 0)) + /************** OPTIONS ***********************************/ static const char *config_keys[2] = { "Verbose", @@ -188,6 +181,11 @@ static data_set_t dtx_ds = { /**********************************************************/ /********** UTILITY FUNCTIONS *****************************/ /**********************************************************/ +char *sstrncpy(char *dest, const char *src, size_t n) { + strncpy(dest, src, n); + dest[n - 1] = '\0'; + return dest; +} /* * Utility function used by the read callback to populate a diff --git a/telemetry/vpp-collectd/vpp/CMakeLists.txt b/telemetry/vpp-collectd/vpp/CMakeLists.txt index 36248b17a..464ab42d8 100644 --- a/telemetry/vpp-collectd/vpp/CMakeLists.txt +++ b/telemetry/vpp-collectd/vpp/CMakeLists.txt @@ -14,22 +14,20 @@ cmake_minimum_required(VERSION 3.5 FATAL_ERROR) # Dependencies - -list(APPEND SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/vpp.c -) - find_package(Vpp REQUIRED) find_package(Collectd REQUIRED) -list (APPEND INCLUDE_DIRS - ${COLLECTD_INCLUDE_DIRS} - ${VPP_INCLUDE_DIRS} - ${CMAKE_CURRENT_SOURCE_DIR}) +list(APPEND SOURCE_FILES + ${CMAKE_CURRENT_SOURCE_DIR}/vpp.c) + +list(APPEND INCLUDE_DIRS + ${COLLECTD_INCLUDE_DIRS} + ${VPP_INCLUDE_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}) -list (APPEND LIBRARIES - ${VPP_LIBRARY_VPPAPICLIENT} - ${VPP_LIBRARY_INFRA}) +list(APPEND LIBRARIES + ${VPP_LIBRARY_VPPAPICLIENT} + ${VPP_LIBRARY_INFRA}) build_library(vpp SHARED diff --git a/telemetry/vpp-collectd/vpp/vpp.c b/telemetry/vpp-collectd/vpp/vpp.c index 679f8feb4..8bf5182a8 100644 --- a/telemetry/vpp-collectd/vpp/vpp.c +++ b/telemetry/vpp-collectd/vpp/vpp.c @@ -13,25 +13,9 @@ * limitations under the License. */ -#if !HAVE_CONFIG_H -#include -#include - -#ifndef __USE_ISOC99 /* required for NAN */ -#define DISABLE_ISOC99 1 -#define __USE_ISOC99 1 -#endif /* !defined(__USE_ISOC99) */ - -#if DISABLE_ISOC99 -#undef DISABLE_ISOC99 -#undef __USE_ISOC99 -#endif /* DISABLE_ISOC99 */ -#endif /* ! HAVE_CONFIG */ - /* Keep order as it is */ #include #include -#include #include #define counter_t vpp_counter_t @@ -39,6 +23,15 @@ #include #undef counter_t +#define STATIC_ARRAY_SIZE(a) (sizeof(a) / sizeof(*(a))) + +#define IS_TRUE(s) \ + ((strcasecmp("true", (s)) == 0) || (strcasecmp("yes", (s)) == 0) || \ + (strcasecmp("on", (s)) == 0)) +#define IS_FALSE(s) \ + ((strcasecmp("false", (s)) == 0) || (strcasecmp("no", (s)) == 0) || \ + (strcasecmp("off", (s)) == 0)) + /************** OPTIONS ***********************************/ static const char *config_keys[2] = { "Verbose", @@ -164,6 +157,11 @@ static data_set_t if_tx_broadcast_ds = { /**********************************************************/ /********** UTILITY FUNCTIONS *****************************/ /**********************************************************/ +char *sstrncpy(char *dest, const char *src, size_t n) { + strncpy(dest, src, n); + dest[n - 1] = '\0'; + return dest; +} /* * Utility function used by the read callback to populate a @@ -274,6 +272,9 @@ static int vpp_config(const char *key, const char *value) { * This function is called once upon startup to initialize the plugin. */ static int vpp_init(void) { + /* Create a heap of 64MB */ + clib_mem_init(0, 64ULL << 20); + u8 *stat_segment_name = (u8 *)STAT_SEGMENT_SOCKET_FILE; int ret = stat_segment_connect((char *)stat_segment_name); @@ -291,7 +292,6 @@ static int vpp_read(void) { char **interfaces = {0}; vec_add1(patterns, (uint8_t *)"^/if"); - vec_add1(patterns, (uint8_t *)"ip4-input"); uint32_t *dir = stat_segment_ls(patterns); stat_segment_data_t *res = stat_segment_dump(dir); @@ -300,9 +300,7 @@ static int vpp_read(void) { for (int k = 0; k < vec_len(res); k++) { if (res[k].type == STAT_DIR_TYPE_NAME_VECTOR) { for (int i = 0; i < vec_len(res[k].name_vector); i++) { - if (res[k].name_vector[i]) { - vec_add1(interfaces, (char *)res[k].name_vector[i]); - } + vec_add1(interfaces, (char *)res[k].name_vector[i]); } break; } @@ -318,13 +316,17 @@ static int vpp_read(void) { case STAT_DIR_TYPE_COUNTER_VECTOR_SIMPLE: for (int k = 0; k < vec_len(res[i].simple_counter_vec); k++) { for (int j = 0; j < vec_len(res[i].simple_counter_vec[k]); j++) { - value_t values[1] = { - (value_t){.derive = res[i].simple_counter_vec[k][j]}}; + if (!interfaces[j]) { + continue; + } if (get_data_set(res[i].name, &data_set)) { continue; } + value_t values[1] = { + (value_t){.derive = res[i].simple_counter_vec[k][j]}}; + err = submit(interfaces[j], data_set.type, values, 1, ×tamp); if (err) @@ -336,15 +338,19 @@ static int vpp_read(void) { case STAT_DIR_TYPE_COUNTER_VECTOR_COMBINED: for (int k = 0; k < vec_len(res[i].combined_counter_vec); k++) { for (int j = 0; j < vec_len(res[i].combined_counter_vec[k]); j++) { - value_t values[2] = { - (value_t){.derive = res[i].combined_counter_vec[k][j].packets}, - (value_t){.derive = res[i].combined_counter_vec[k][j].bytes}, - }; + if (!interfaces[j]) { + continue; + } if (get_data_set(res[i].name, &data_set)) { continue; } + value_t values[2] = { + (value_t){.derive = res[i].combined_counter_vec[k][j].packets}, + (value_t){.derive = res[i].combined_counter_vec[k][j].bytes}, + }; + err = submit(interfaces[j], data_set.type, values, 2, ×tamp); if (err) -- cgit 1.2.3-korg