diff options
author | Luca Deri <deri@ntop.org> | 2019-09-02 14:00:45 +0200 |
---|---|---|
committer | Luca Deri <deri@ntop.org> | 2019-09-02 14:00:45 +0200 |
commit | f1ad951bf6c49294fb160183ac9697839de8b005 (patch) | |
tree | 7635c6f39e425e1a56403fbbf215d581ca01b085 /src/lib/ndpi_serializer.c | |
parent | d0436e7b29698ffa0e3c855b258af7b89ea53e20 (diff) | |
parent | 2616dcb4248cfa6afa3dc2592e878eb10c736007 (diff) |
Merge branch 'dev' of https://github.com/ntop/nDPI into dev
Diffstat (limited to 'src/lib/ndpi_serializer.c')
-rw-r--r-- | src/lib/ndpi_serializer.c | 56 |
1 files changed, 40 insertions, 16 deletions
diff --git a/src/lib/ndpi_serializer.c b/src/lib/ndpi_serializer.c index 81dc6d131..4119b51e7 100644 --- a/src/lib/ndpi_serializer.c +++ b/src/lib/ndpi_serializer.c @@ -572,10 +572,19 @@ int ndpi_serialize_uint32_int32(ndpi_serializer *_serializer, serializer->size_used += snprintf((char *) &serializer->buffer[serializer->size_used], buff_diff, "%s%d", (serializer->size_used > 0) ? serializer->csv_separator : "", value); } else { - serializer->buffer[serializer->size_used++] = ndpi_serialization_uint32_int32; - - ndpi_serialize_single_uint32(serializer, key); - ndpi_serialize_single_uint32(serializer, value); + if (value <= 127 && value >= -128) { + serializer->buffer[serializer->size_used++] = ndpi_serialization_uint32_int8; + ndpi_serialize_single_uint32(serializer, key); + ndpi_serialize_single_uint8(serializer, value); + } else if (value <= 32767 && value >= -32768) { + serializer->buffer[serializer->size_used++] = ndpi_serialization_uint32_int16; + ndpi_serialize_single_uint32(serializer, key); + ndpi_serialize_single_uint16(serializer, value); + } else { + serializer->buffer[serializer->size_used++] = ndpi_serialization_uint32_int32; + ndpi_serialize_single_uint32(serializer, key); + ndpi_serialize_single_uint32(serializer, value); + } } return(0); @@ -613,10 +622,13 @@ int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer, (long long int)value); } else { - serializer->buffer[serializer->size_used++] = ndpi_serialization_uint32_int64; - - ndpi_serialize_single_uint32(serializer, key); - ndpi_serialize_single_uint64(serializer, value); + if (value <= 2147483647 && value >= -2147483648) { + return(ndpi_serialize_uint32_int32(_serializer, key, value)); + } else { + serializer->buffer[serializer->size_used++] = ndpi_serialization_uint32_int64; + ndpi_serialize_single_uint32(serializer, key); + ndpi_serialize_single_uint64(serializer, value); + } } return(0); @@ -747,10 +759,19 @@ int ndpi_serialize_string_int32(ndpi_serializer *_serializer, serializer->size_used += snprintf((char *) &serializer->buffer[serializer->size_used], buff_diff, "%s%d", (serializer->size_used > 0) ? serializer->csv_separator : "", value); } else { - serializer->buffer[serializer->size_used++] = ndpi_serialization_string_int32; - - ndpi_serialize_single_string(serializer, key, klen); - ndpi_serialize_single_uint32(serializer, value); + if (value <= 127 && value >= -128) { + serializer->buffer[serializer->size_used++] = ndpi_serialization_string_int8; + ndpi_serialize_single_string(serializer, key, klen); + ndpi_serialize_single_uint8(serializer, value); + } else if (value <= 32767 && value >= -32768) { + serializer->buffer[serializer->size_used++] = ndpi_serialization_string_int16; + ndpi_serialize_single_string(serializer, key, klen); + ndpi_serialize_single_uint16(serializer, value); + } else { + serializer->buffer[serializer->size_used++] = ndpi_serialization_string_int32; + ndpi_serialize_single_string(serializer, key, klen); + ndpi_serialize_single_uint32(serializer, value); + } } return(0); @@ -796,10 +817,13 @@ int ndpi_serialize_string_int64(ndpi_serializer *_serializer, "%s%lld", (serializer->size_used > 0) ? serializer->csv_separator : "", (long long int)value); } else { - serializer->buffer[serializer->size_used++] = ndpi_serialization_string_int64; - - ndpi_serialize_single_string(serializer, key, klen); - ndpi_serialize_single_uint32(serializer, value); + if (value <= 2147483647 && value >= -2147483648) { + return(ndpi_serialize_string_int32(_serializer, key, value)); + } else { + serializer->buffer[serializer->size_used++] = ndpi_serialization_string_int64; + ndpi_serialize_single_string(serializer, key, klen); + ndpi_serialize_single_uint32(serializer, value); + } } return(0); |