diff options
author | Alfredo Cardigliano <cardigliano@ntop.org> | 2022-09-01 14:43:52 +0200 |
---|---|---|
committer | Alfredo Cardigliano <cardigliano@ntop.org> | 2022-09-01 14:43:52 +0200 |
commit | bd29fa46ba222c357f0a654b807eaee00a60d7d9 (patch) | |
tree | 829216406aff4ad2b36f27b9fc07be3eb941ebdc | |
parent | 2372063d25087b4a30be81c06741770d20d8c64a (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.h | 2 | ||||
-rw-r--r-- | src/lib/ndpi_serializer.c | 5 | ||||
-rw-r--r-- | tests/unit/unit.c | 10 |
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) { |