1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2018 Intel Corporation
7 #include <rte_metrics.h>
8 #include <rte_metrics_telemetry.h>
10 #ifndef _RTE_TELEMETRY_INTERNAL_H_
11 #define _RTE_TELEMETRY_INTERNAL_H_
13 /* function types for the functions coming from metrics library */
14 typedef int32_t (*metrics_tel_reg_all_ethdev_t)(int *metrics_register_done,
17 typedef int32_t (*metrics_tel_encode_json_format_t)(
18 struct telemetry_encode_param *ep, char **json_buffer);
20 typedef int32_t (*metrics_tel_get_port_stats_ids_t)(
21 struct telemetry_encode_param *ep);
23 typedef int32_t (*metrics_tel_get_ports_stats_json_t)(
24 struct telemetry_encode_param *ep,
25 int *reg_index, char **json_buffer);
27 typedef int32_t (*metrics_tel_extract_data_t)(struct telemetry_encode_param *ep,
30 struct metrics_functions {
31 metrics_tel_reg_all_ethdev_t reg_all_ethdev;
32 metrics_tel_encode_json_format_t encode_json_format;
33 metrics_tel_get_port_stats_ids_t get_port_stats_ids;
34 metrics_tel_get_ports_stats_json_t get_ports_stats_json;
35 metrics_tel_extract_data_t extract_data;
37 extern const struct metrics_functions *metrics_fns;
39 /* API for use by metrics libraries to provide the functions to use */
41 void rte_telemetry_set_metrics_fns(const struct metrics_functions *fns);
44 extern int telemetry_log_level;
46 #define TELEMETRY_LOG(level, fmt, args...) \
47 rte_log(RTE_LOG_ ##level, telemetry_log_level, "%s(): "fmt "\n", \
50 #define TELEMETRY_LOG_ERR(fmt, args...) \
51 TELEMETRY_LOG(ERR, fmt, ## args)
53 #define TELEMETRY_LOG_WARN(fmt, args...) \
54 TELEMETRY_LOG(WARNING, fmt, ## args)
56 #define TELEMETRY_LOG_INFO(fmt, args...) \
57 TELEMETRY_LOG(INFO, fmt, ## args)
59 #define MAX_METRICS 256
61 typedef struct telemetry_client {
64 TAILQ_ENTRY(telemetry_client) client_list;
67 typedef struct telemetry_impl {
73 int reg_index[RTE_MAX_ETHPORTS];
74 int metrics_register_done;
75 TAILQ_HEAD(, telemetry_client) client_list_head;
76 struct telemetry_client *request_client;
77 int register_fail_count;
80 enum rte_telemetry_parser_actions {
86 rte_telemetry_parse_client_message(struct telemetry_impl *telemetry, char *buf);
89 rte_telemetry_send_error_response(struct telemetry_impl *telemetry,
93 rte_telemetry_register_client(struct telemetry_impl *telemetry,
94 const char *client_path);
97 rte_telemetry_unregister_client(struct telemetry_impl *telemetry,
98 const char *client_path);
101 rte_telemetry_send_ports_stats_values(struct telemetry_encode_param *ep,
102 struct telemetry_impl *telemetry);
105 rte_telemetry_socket_messaging_testing(int index, int socket);
108 rte_telemetry_send_global_stats_values(struct telemetry_encode_param *ep,
109 struct telemetry_impl *telemetry);
112 rte_telemetry_parser_test(struct telemetry_impl *telemetry);