examples/fips_validation: fix buffer overflow
[dpdk.git] / lib / librte_telemetry / telemetry_data.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2020 Intel Corporation
3  */
4
5 #ifndef _TELEMETRY_DATA_H_
6 #define _TELEMETRY_DATA_H_
7
8 #include <inttypes.h>
9 #include "rte_telemetry.h"
10
11 enum tel_container_types {
12         RTE_TEL_NULL,         /** null, used as error value */
13         RTE_TEL_STRING,       /** basic string type, no included data */
14         RTE_TEL_DICT,         /** name-value pairs, of individual value type */
15         RTE_TEL_ARRAY_STRING, /** array of string values only */
16         RTE_TEL_ARRAY_INT,    /** array of signed, 32-bit int values */
17         RTE_TEL_ARRAY_U64,    /** array of unsigned 64-bit int values */
18 };
19
20 /* each type here must have an equivalent enum in the value types enum in
21  * telemetry.h and an array type defined above, and have appropriate
22  * type assignment in the RTE_TEL_data_start_array() function
23  */
24 union tel_value {
25         char sval[RTE_TEL_MAX_STRING_LEN];
26         int ival;
27         uint64_t u64val;
28 };
29
30 struct tel_dict_entry {
31         char name[RTE_TEL_MAX_STRING_LEN];
32         enum rte_tel_value_type type;
33         union tel_value value;
34 };
35
36 struct rte_tel_data {
37         enum tel_container_types type;
38         unsigned int data_len; /* for array or object, how many items */
39         union {
40                 char str[RTE_TEL_MAX_SINGLE_STRING_LEN];
41                 struct tel_dict_entry dict[RTE_TEL_MAX_DICT_ENTRIES];
42                 union tel_value array[RTE_TEL_MAX_ARRAY_ENTRIES];
43         } data; /* data container */
44 };
45
46 #endif