c298c391959f6d9e7dd914fbd650ed9660370c2f
[dpdk.git] / lib / librte_telemetry / rte_telemetry_internal.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Intel Corporation
3  */
4
5 #include <rte_log.h>
6 #include <rte_tailq.h>
7
8 #ifndef _RTE_TELEMETRY_INTERNAL_H_
9 #define _RTE_TELEMETRY_INTERNAL_H_
10
11 /* Logging Macros */
12 extern int telemetry_log_level;
13
14 #define TELEMETRY_LOG(level, fmt, args...) \
15         rte_log(RTE_LOG_ ##level, telemetry_log_level, "%s(): "fmt "\n", \
16                 __func__, ##args)
17
18 #define TELEMETRY_LOG_ERR(fmt, args...) \
19         TELEMETRY_LOG(ERR, fmt, ## args)
20
21 #define TELEMETRY_LOG_WARN(fmt, args...) \
22         TELEMETRY_LOG(WARNING, fmt, ## args)
23
24 #define TELEMETRY_LOG_INFO(fmt, args...) \
25         TELEMETRY_LOG(INFO, fmt, ## args)
26
27 typedef struct telemetry_client {
28         char *file_path;
29         int fd;
30         TAILQ_ENTRY(telemetry_client) client_list;
31 } telemetry_client;
32
33 typedef struct telemetry_impl {
34         int accept_fd;
35         int server_fd;
36         pthread_t thread_id;
37         int thread_status;
38         uint32_t socket_id;
39         int reg_index[RTE_MAX_ETHPORTS];
40         int metrics_register_done;
41         TAILQ_HEAD(, telemetry_client) client_list_head;
42         struct telemetry_client *request_client;
43         int register_fail_count;
44 } telemetry_impl;
45
46 enum rte_telemetry_parser_actions {
47         ACTION_GET = 0,
48         ACTION_DELETE = 2
49 };
50
51 int32_t
52 rte_telemetry_parse_client_message(struct telemetry_impl *telemetry, char *buf);
53
54 int32_t
55 rte_telemetry_send_error_response(struct telemetry_impl *telemetry,
56         int error_type);
57
58 int32_t
59 rte_telemetry_register_client(struct telemetry_impl *telemetry,
60         const char *client_path);
61
62 int32_t
63 rte_telemetry_unregister_client(struct telemetry_impl *telemetry,
64         const char *client_path);
65
66 /**
67  * This is a wrapper for the ethdev api rte_eth_find_next().
68  * If rte_eth_find_next() returns the same port id that we passed it,
69  * then we know that that port is active.
70  */
71 int32_t
72 rte_telemetry_is_port_active(int port_id);
73
74 int32_t
75 rte_telemetry_send_ports_stats_values(uint32_t *metric_ids, int num_metric_ids,
76         uint32_t *port_ids, int num_port_ids, struct telemetry_impl *telemetry);
77
78 int32_t
79 rte_telemetry_socket_messaging_testing(int index, int socket);
80
81 #endif