Currently, adding TEL_DICT containers in TEL_ARRAY_CONTAINER containers
is not supported by rte_tel_data_add_array_container. It wrongfully
returns -EINVAL where it should allow it.

This is supported by the JSON formatter.

Allow the same value types than rte_tel_data_add_dict_container().

Fixes: c933bb5177ca ("telemetry: support array values in data object")

Signed-off-by: Robin Jarry <[email protected]>
---
 lib/telemetry/telemetry_data.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/telemetry/telemetry_data.c b/lib/telemetry/telemetry_data.c
index 0354a0654804..0a006559ab42 100644
--- a/lib/telemetry/telemetry_data.c
+++ b/lib/telemetry/telemetry_data.c
@@ -96,10 +96,10 @@ int
 rte_tel_data_add_array_container(struct rte_tel_data *d,
                struct rte_tel_data *val, int keep)
 {
-       if (d->type != TEL_ARRAY_CONTAINER ||
-                       (val->type != TEL_ARRAY_UINT
+       if (d->type != TEL_ARRAY_CONTAINER || (val->type != TEL_ARRAY_UINT
                        && val->type != TEL_ARRAY_INT
-                       && val->type != TEL_ARRAY_STRING))
+                       && val->type != TEL_ARRAY_STRING
+                       && val->type != TEL_DICT))
                return -EINVAL;
        if (d->data_len >= RTE_TEL_MAX_ARRAY_ENTRIES)
                return -ENOSPC;
-- 
2.52.0

Reply via email to