aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlfredo Cardigliano <cardigliano@ntop.org>2022-09-01 14:43:52 +0200
committerAlfredo Cardigliano <cardigliano@ntop.org>2022-09-01 14:43:52 +0200
commitbd29fa46ba222c357f0a654b807eaee00a60d7d9 (patch)
tree829216406aff4ad2b36f27b9fc07be3eb941ebdc
parent2372063d25087b4a30be81c06741770d20d8c64a (diff)
Serializer supports double for JSON and CSV only for the time being (TLV needs to be extended)
-rw-r--r--src/include/ndpi_typedefs.h2
-rw-r--r--src/lib/ndpi_serializer.c5
-rw-r--r--tests/unit/unit.c10
3 files changed, 12 insertions, 5 deletions
diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index aaf621d33..80834005b 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -1629,7 +1629,7 @@ typedef enum {
ndpi_serialization_end_of_list = 15,
/* Do not add new types!
* Exceeding 16 types requires reworking the TLV encoding due to key type limit (4 bit) */
- ndpi_serialization_double = 16 /* FIXX this is currently unusable */
+ ndpi_serialization_double = 16 /* FIXX this is currently unusable */
} ndpi_serialization_type;
#define NDPI_SERIALIZER_DEFAULT_HEADER_SIZE 1024
diff --git a/src/lib/ndpi_serializer.c b/src/lib/ndpi_serializer.c
index e51a168d0..85096c100 100644
--- a/src/lib/ndpi_serializer.c
+++ b/src/lib/ndpi_serializer.c
@@ -1650,6 +1650,7 @@ int ndpi_serialize_binary_float(ndpi_serializer *_serializer,
/* ********************************** */
+/* JSON/CSV only (TLV not yet supported due to a type field limit) */
int ndpi_serialize_binary_double(ndpi_serializer *_serializer,
const char *key,
u_int16_t klen,
@@ -1694,10 +1695,14 @@ int ndpi_serialize_binary_double(ndpi_serializer *_serializer,
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
serializer->status.buffer.size_used += ndpi_snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
} else {
+#if 1
+ fprintf(stderr, "TLV serializer does not support double\n");
+#else
serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_double;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_double(serializer, value);
+#endif
}
serializer->status.flags |= NDPI_SERIALIZER_STATUS_NOT_EMPTY;
diff --git a/tests/unit/unit.c b/tests/unit/unit.c
index 1620daab3..7a5cfd6f5 100644
--- a/tests/unit/unit.c
+++ b/tests/unit/unit.c
@@ -100,7 +100,8 @@ int serializerUnitTest() {
assert(ndpi_serialize_string_string(&serializer, kbuf, vbuf) != -1);
assert(ndpi_serialize_string_uint32(&serializer, kbuf, i*i) != -1);
assert(ndpi_serialize_string_float(&serializer, kbuf, (float)(i*i), "%f") != -1);
- assert(ndpi_serialize_string_double(&serializer, kbuf, ((double)(FLT_MAX))*2, "%lf") != -1);
+ if (fmt != ndpi_serialization_format_tlv)
+ assert(ndpi_serialize_string_double(&serializer, kbuf, ((double)(FLT_MAX))*2, "%lf") != -1);
assert(ndpi_serialize_string_int64(&serializer, kbuf, INT64_MAX) != -1);
if ((i&0x3) == 0x3) ndpi_serialize_end_of_record(&serializer);
}
@@ -185,7 +186,7 @@ int serializerUnitTest() {
}
break;
default:
- printf("%s: ERROR (unsupported TLV key type %u)\n", __FUNCTION__, kt);
+ printf("%s: ERROR Unsupported TLV key type %u (value type %u)\n", __FUNCTION__, kt, et);
return -1;
}
@@ -222,7 +223,7 @@ int serializerUnitTest() {
default:
if (verbose) printf("\n");
- printf("%s: ERROR (unsupported type %u detected)\n", __FUNCTION__, et);
+ printf("%s: ERROR Unsupported TLV value type %u (key type %u)\n", __FUNCTION__, et, kt);
return -1;
}
}
@@ -277,7 +278,8 @@ int serializeProtoUnitTest(void)
NDPI_SET_BIT(risks, NDPI_TLS_SELFSIGNED_CERTIFICATE);
ndpi_serialize_proto(ndpi_info_mod, &serializer, risks, NDPI_CONFIDENCE_DPI, ndpi_proto);
assert(ndpi_serialize_string_float(&serializer, "float", FLT_MAX, "%f") != -1);
- assert(ndpi_serialize_string_double(&serializer, "double", ((double)(FLT_MAX))*2, "%lf") != -1);
+ if (fmt != ndpi_serialization_format_tlv)
+ assert(ndpi_serialize_string_double(&serializer, "double", ((double)(FLT_MAX))*2, "%lf") != -1);
if (fmt == ndpi_serialization_format_json)
{