aboutsummaryrefslogtreecommitdiffstats
path: root/telemetry
diff options
context:
space:
mode:
authorEnrico Loparco (eloparco) <eloparco@cisco.com>2021-06-24 09:15:41 +0200
committerEnrico Loparco (eloparco) <eloparco@cisco.com>2021-06-24 09:15:41 +0200
commit229385955109b866a23c4ac2aa03d4d11044c39d (patch)
tree0591f9c2fc4144d62330337cc2b94c63dfeded54 /telemetry
parent6ffbb5ed61733b8dbef39b1a9d437e899e9359d7 (diff)
[HICN-708] Rebase with master
Signed-off-by: Enrico Loparco (eloparco) <eloparco@cisco.com> Change-Id: I2122e1d61dd3b2e039972624ffbdbcb3c5610159
Diffstat (limited to 'telemetry')
-rw-r--r--telemetry/vpp-collectd/CMakeLists.txt2
-rw-r--r--telemetry/vpp-collectd/vpp-hicn/CMakeLists.txt9
-rw-r--r--telemetry/vpp-collectd/vpp-hicn/vpp_hicn.c30
-rw-r--r--telemetry/vpp-collectd/vpp/CMakeLists.txt22
-rw-r--r--telemetry/vpp-collectd/vpp/vpp.c58
5 files changed, 61 insertions, 60 deletions
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 <stdlib.h>
-#include <string.h>
-
-#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 <config.h>
#include <collectd.h>
-#include <common.h>
#include <plugin.h>
#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 <stdlib.h>
-#include <string.h>
-
-#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 <config.h>
#include <collectd.h>
-#include <common.h>
#include <plugin.h>
#define counter_t vpp_counter_t
@@ -39,6 +23,15 @@
#include <vppinfra/vec.h>
#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, &timestamp);
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, &timestamp);
if (err)