aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ndpi_serializer.c
diff options
context:
space:
mode:
authorLuca Deri <deri@ntop.org>2021-11-30 22:15:26 +0100
committerLuca Deri <deri@ntop.org>2021-11-30 22:15:26 +0100
commit33557c5fbca3e6234022e9be72999a837551c91f (patch)
treee32465a63f22ba6a07476240916fc4d44d017026 /src/lib/ndpi_serializer.c
parent5e0befd56c1dc70f2f7831eaa5e94dbd47565d8d (diff)
Improved CSV serialization
Diffstat (limited to 'src/lib/ndpi_serializer.c')
-rw-r--r--src/lib/ndpi_serializer.c213
1 files changed, 134 insertions, 79 deletions
diff --git a/src/lib/ndpi_serializer.c b/src/lib/ndpi_serializer.c
index 4d3c0788f..d184274ad 100644
--- a/src/lib/ndpi_serializer.c
+++ b/src/lib/ndpi_serializer.c
@@ -51,10 +51,10 @@
u_int64_t ndpi_htonll(u_int64_t v) {
union { u_int32_t lv[2]; u_int64_t llv; } u;
-
+
u.lv[0] = htonl(v >> 32);
u.lv[1] = htonl(v & 0xFFFFFFFFULL);
-
+
return(u.llv);
}
@@ -62,9 +62,9 @@ u_int64_t ndpi_htonll(u_int64_t v) {
u_int64_t ndpi_ntohll(u_int64_t v) {
union { u_int32_t lv[2]; u_int64_t llv; } u;
-
+
u.llv = v;
-
+
return((u_int64_t)ntohl(u.lv[0]) << 32) | (u_int64_t)ntohl(u.lv[1]);
}
@@ -72,10 +72,10 @@ u_int64_t ndpi_ntohll(u_int64_t v) {
static int ndpi_is_number(const char *str, u_int32_t str_len) {
unsigned int i;
-
+
for(i = 0; i < str_len; i++)
if(!isdigit(str[i])) return(0);
-
+
return(1);
}
@@ -159,7 +159,7 @@ static inline int ndpi_snappend(char *buf, size_t size, const char *fmt, ...) {
else if (wlen >= size)
wlen = size-1;
- return wlen;
+ return(wlen);
}
#endif
@@ -190,7 +190,7 @@ void ndpi_reset_serializer(ndpi_serializer *_serializer) {
void ndpi_serializer_skip_header(ndpi_serializer *_serializer) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
-
+
serializer->status.flags |= NDPI_SERIALIZER_STATUS_HDR_DONE;
}
@@ -200,8 +200,9 @@ static int ndpi_init_serializer_buffer(ndpi_private_serializer_buffer *buffer, u
buffer->initial_size = buffer->size = buffer_size;
buffer->data = (u_int8_t *) calloc(buffer->size, sizeof(u_int8_t));
if(buffer->data == NULL)
- return -1;
- return 0;
+ return(-1);
+
+ return(0);
}
/* ********************************** */
@@ -217,7 +218,7 @@ int ndpi_init_serializer_ll(ndpi_serializer *_serializer,
if (ndpi_init_serializer_buffer(&serializer->buffer, buffer_size) != 0)
return(-1);
-
+
if(serializer->fmt == ndpi_serialization_format_json) {
/* nothing to do */
@@ -280,12 +281,12 @@ static inline int ndpi_serializer_check_header_room(ndpi_private_serializer *ser
u_int32_t buff_diff = serializer->header.size - serializer->status.header.size_used;
if (buff_diff < needed)
- if (ndpi_extend_serializer_buffer(&serializer->header, needed - buff_diff) < 0)
- return -1;
+ if (ndpi_extend_serializer_buffer(&serializer->header, needed - buff_diff) < 0)
+ return(-1);
buff_diff = serializer->header.size - serializer->status.header.size_used;
- return buff_diff;
+ return(buff_diff);
}
/* ********************************** */
@@ -294,17 +295,17 @@ static inline int ndpi_serializer_header_uint32(ndpi_private_serializer *seriali
int room;
if (serializer->status.flags & NDPI_SERIALIZER_STATUS_HDR_DONE)
- return 0;
+ return(0);
room = ndpi_serializer_check_header_room(serializer, 12);
if (room < 0)
- return -1;
+ return(-1);
- serializer->status.header.size_used += snprintf((char *) &serializer->header.data[serializer->status.header.size_used],
+ serializer->status.header.size_used += snprintf((char *) &serializer->header.data[serializer->status.header.size_used],
room, "%s%u", (serializer->status.header.size_used > 0) ? serializer->csv_separator : "", key);
- return 0;
+ return(0);
}
/* ********************************** */
@@ -313,12 +314,12 @@ static inline int ndpi_serializer_header_string(ndpi_private_serializer *seriali
int room;
if (serializer->status.flags & NDPI_SERIALIZER_STATUS_HDR_DONE)
- return 0;
+ return(0);
room = ndpi_serializer_check_header_room(serializer, klen + 4);
if (room < 0)
- return -1;
+ return(-1);
if (serializer->status.header.size_used > 0) {
int slen = strlen(serializer->csv_separator);
@@ -333,7 +334,7 @@ static inline int ndpi_serializer_header_string(ndpi_private_serializer *seriali
serializer->header.data[serializer->status.header.size_used] = '\0';
- return 0;
+ return(0);
}
/* ********************************** */
@@ -393,7 +394,7 @@ char* ndpi_serializer_get_header(ndpi_serializer *_serializer, u_int32_t *buffer
if(buf == NULL) {
*buffer_len = 0;
- return "";
+ return("");
}
/* NULL terminate the buffer */
@@ -409,7 +410,8 @@ char* ndpi_serializer_get_header(ndpi_serializer *_serializer, u_int32_t *buffer
ndpi_serialization_format ndpi_serializer_get_format(ndpi_serializer *_serializer) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- return serializer->fmt;
+
+ return(serializer->fmt);
}
/* ********************************** */
@@ -587,7 +589,7 @@ int ndpi_serialize_raw_record(ndpi_serializer *_serializer,
u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int16_t needed = record_len;
u_int8_t add_comma = 0;
-
+
if(serializer->fmt == ndpi_serialization_format_json) {
needed += 1;
@@ -596,21 +598,21 @@ int ndpi_serialize_raw_record(ndpi_serializer *_serializer,
else
needed += 2, add_comma = 1;
}
-
+
if(buff_diff < needed) {
if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
-
+
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- if(serializer->fmt == ndpi_serialization_format_json) {
+ if(serializer->fmt == ndpi_serialization_format_json) {
if(add_comma)
serializer->buffer.data[serializer->status.buffer.size_used-1] = ',';
else
serializer->status.buffer.size_used--;
}
-
+
memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], record, record_len);
serializer->status.buffer.size_used += record_len;
@@ -618,9 +620,9 @@ int ndpi_serialize_raw_record(ndpi_serializer *_serializer,
serializer->buffer.data[serializer->status.buffer.size_used] = ']';
if(add_comma) serializer->status.buffer.size_used++;
}
-
+
ndpi_serialize_end_of_record(_serializer);
-
+
return(0);
}
@@ -661,7 +663,7 @@ int ndpi_serialize_end_of_record(ndpi_serializer *_serializer) {
}
serializer->status.flags &= ~NDPI_SERIALIZER_STATUS_NOT_EMPTY;
-
+
return(0);
}
@@ -675,7 +677,7 @@ static inline void ndpi_serialize_csv_pre(ndpi_private_serializer *serializer) {
} else {
if(serializer->buffer.size > serializer->status.buffer.size_used)
serializer->buffer.data[serializer->status.buffer.size_used] = serializer->csv_separator[0];
-
+
serializer->status.buffer.size_used++;
}
}
@@ -700,7 +702,7 @@ static inline void ndpi_serialize_json_pre(ndpi_serializer *_serializer) {
serializer->status.buffer.size_used--; /* Remove ']' */
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_SOL)
serializer->status.flags &= ~NDPI_SERIALIZER_STATUS_SOL;
- else
+ else
serializer->buffer.data[serializer->status.buffer.size_used++] = ',';
} else {
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_SOB)
@@ -771,13 +773,13 @@ int ndpi_serialize_uint32_uint32(ndpi_serializer *_serializer,
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used],
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used],
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%u", value);
ndpi_serialize_json_post(_serializer);
@@ -838,13 +840,13 @@ int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
NDPI_U64_FORMAT, (unsigned long long)value);
@@ -900,16 +902,16 @@ int ndpi_serialize_uint32_int32(ndpi_serializer *_serializer,
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
-
+
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used],
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used],
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%d", value);
ndpi_serialize_json_post(_serializer);
@@ -917,7 +919,7 @@ int ndpi_serialize_uint32_int32(ndpi_serializer *_serializer,
if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%d", value);
} else {
@@ -970,14 +972,14 @@ int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used],
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used],
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, NDPI_I64_FORMAT, (long long int)value);
ndpi_serialize_json_post(_serializer);
@@ -1092,7 +1094,7 @@ static int ndpi_serialize_uint32_binary(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used],
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
@@ -1104,7 +1106,7 @@ static int ndpi_serialize_uint32_binary(ndpi_serializer *_serializer,
if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%s", value);
} else {
@@ -1143,7 +1145,7 @@ int ndpi_serialize_uint32_boolean(ndpi_serializer *_serializer,
if(serializer->fmt != ndpi_serialization_format_json &&
serializer->fmt != ndpi_serialization_format_csv)
- return -1;
+ return(-1);
if(buff_diff < needed) {
if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
@@ -1155,14 +1157,14 @@ int ndpi_serialize_uint32_boolean(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used],
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used],
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%s", value ? "true" : "false");
ndpi_serialize_json_post(_serializer);
@@ -1213,12 +1215,12 @@ int ndpi_serialize_binary_int32(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(key, klen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
-
- serializer->status.buffer.size_used += snprintf((char *)
+
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, "%d", value);
ndpi_serialize_json_post(_serializer);
@@ -1246,7 +1248,7 @@ int ndpi_serialize_binary_int32(ndpi_serializer *_serializer,
}
serializer->status.flags |= NDPI_SERIALIZER_STATUS_NOT_EMPTY;
-
+
return(0);
}
@@ -1291,13 +1293,13 @@ int ndpi_serialize_binary_int64(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(key, klen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
NDPI_I64_FORMAT, (long long int)value);
@@ -1337,6 +1339,34 @@ int ndpi_serialize_binary_uint32(ndpi_serializer *_serializer,
u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
+ if(serializer->fmt == ndpi_serialization_format_csv) {
+ /* Key is ignored */
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
+ u_int16_t needed;
+ char _value[16];
+
+ snprintf(_value, sizeof(_value), "%u", value);
+ needed = strlen(_value) + 1 /* CVS separator */;
+
+ if(buff_diff < needed) {
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
+ return(-1);
+ else
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
+ }
+
+ if(!(serializer->status.flags & NDPI_SERIALIZER_STATUS_HDR_DONE)) {
+ if(ndpi_serializer_header_string(serializer, key, klen) < 0)
+ return(-1);
+ }
+
+ ndpi_serialize_csv_pre(serializer);
+ needed--;
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], _value, needed);
+ serializer->status.buffer.size_used += needed;
+ return(0);
+ }
+
if(ndpi_is_number(key, klen))
return(ndpi_serialize_uint32_uint32(_serializer, atoi(key), value));
@@ -1363,15 +1393,15 @@ int ndpi_serialize_binary_uint32(ndpi_serializer *_serializer,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, ":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used],
- buff_diff, "%u", value);
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used],
+ buff_diff, "%u", value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
@@ -1379,8 +1409,8 @@ int ndpi_serialize_binary_uint32(ndpi_serializer *_serializer,
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
serializer->status.buffer.size_used += snprintf((char *)
- &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
- "%u", value);
+ &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ "%u", value);
} else {
if(value <= 0xff) {
serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_uint8;
@@ -1464,13 +1494,13 @@ int ndpi_serialize_binary_uint64(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(key, klen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += snprintf((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
NDPI_U64_FORMAT, (unsigned long long)value);
@@ -1639,7 +1669,7 @@ static int ndpi_serialize_binary_raw(ndpi_serializer *_serializer,
/* ********************************** */
-/* Key is a <string, len> pair, value is a <string, len> pair */
+/* Key is a <string, len> pair, value is a <string, len> pair */
int ndpi_serialize_binary_binary(ndpi_serializer *_serializer,
const char *key,
u_int16_t klen,
@@ -1650,7 +1680,7 @@ int ndpi_serialize_binary_binary(ndpi_serializer *_serializer,
if(ndpi_is_number(key, klen))
return(ndpi_serialize_uint32_binary(_serializer, atoi(key), value, vlen));
- return ndpi_serialize_binary_raw(_serializer, key, klen, value, vlen, 1 /* escape */);
+ return(ndpi_serialize_binary_raw(_serializer, key, klen, value, vlen, 1 /* escape */));
}
/* ********************************** */
@@ -1668,7 +1698,32 @@ int ndpi_serialize_string_binary(ndpi_serializer *_serializer,
int ndpi_serialize_string_string(ndpi_serializer *_serializer,
const char *key, const char *_value) {
const char *value = _value ? _value : "";
- return(ndpi_serialize_binary_binary(_serializer, key, strlen(key), value, strlen(value)));
+ ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
+
+ if(serializer->fmt == ndpi_serialization_format_csv) {
+ /* Key is ignored */
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
+ u_int16_t needed = strlen(_value) + 1 /* CVS separator */;
+
+ if(buff_diff < needed) {
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
+ return(-1);
+ else
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
+ }
+
+ if(!(serializer->status.flags & NDPI_SERIALIZER_STATUS_HDR_DONE)) {
+ if(ndpi_serializer_header_string(serializer, key, strlen(key)) < 0)
+ return(-1);
+ }
+
+ ndpi_serialize_csv_pre(serializer);
+ needed--;
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], _value, needed);
+ serializer->status.buffer.size_used += needed;
+ return(0);
+ } else
+ return(ndpi_serialize_binary_binary(_serializer, key, strlen(key), value, strlen(value)));
}
/* ********************************** */
@@ -1689,7 +1744,7 @@ int ndpi_serialize_binary_boolean(ndpi_serializer *_serializer,
if(serializer->fmt != ndpi_serialization_format_json &&
serializer->fmt != ndpi_serialization_format_csv)
- return -1;
+ return(-1);
if(ndpi_is_number(key, klen))
return(ndpi_serialize_uint32_boolean(_serializer, atoi(key), value));
@@ -1787,7 +1842,7 @@ int ndpi_serialize_start_of_list(ndpi_serializer *_serializer,
const char *key = _key ? _key : "";
u_int16_t klen = strlen(key);
- return ndpi_serialize_start_of_list_binary(_serializer, key, klen);
+ return(ndpi_serialize_start_of_list_binary(_serializer, key, klen));
}
/* ********************************** */
@@ -1821,7 +1876,7 @@ int ndpi_serialize_start_of_block_binary(ndpi_serializer *_serializer,
u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
- if(serializer->fmt != ndpi_serialization_format_json &&
+ if(serializer->fmt != ndpi_serialization_format_json &&
serializer->fmt != ndpi_serialization_format_tlv)
return(-1);
@@ -1841,7 +1896,7 @@ int ndpi_serialize_start_of_block_binary(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ": {");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
ndpi_serialize_json_post(_serializer);
-
+
serializer->status.flags |= NDPI_SERIALIZER_STATUS_SOB;
} else /* ndpi_serialization_format_tlv */ {
serializer->buffer.data[serializer->status.buffer.size_used++] = ndpi_serialization_start_of_block;
@@ -1859,7 +1914,7 @@ int ndpi_serialize_start_of_block(ndpi_serializer *_serializer,
const char *key = _key ? _key : "";
u_int16_t klen = strlen(key);
- return ndpi_serialize_start_of_block_binary(_serializer, key, klen);
+ return(ndpi_serialize_start_of_block_binary(_serializer, key, klen));
}
/* ********************************** */
@@ -1870,7 +1925,7 @@ int ndpi_serialize_end_of_block(ndpi_serializer *_serializer) {
u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
- if(serializer->fmt != ndpi_serialization_format_json &&
+ if(serializer->fmt != ndpi_serialization_format_json &&
serializer->fmt != ndpi_serialization_format_tlv)
return(-1);
@@ -1907,8 +1962,8 @@ void ndpi_serializer_create_snapshot(ndpi_serializer *_serializer) {
(serializer->status.flags & NDPI_SERIALIZER_STATUS_ARRAY) ? " ARRAY" : "",
(serializer->status.flags & NDPI_SERIALIZER_STATUS_EOR) ? " EOR" : ""
);
-#endif
-
+#endif
+
memcpy(&serializer->snapshot, &serializer->status, sizeof(ndpi_private_serializer_status));
serializer->has_snapshot = 1;
}
@@ -1917,7 +1972,7 @@ void ndpi_serializer_create_snapshot(ndpi_serializer *_serializer) {
void ndpi_serializer_rollback_snapshot(ndpi_serializer *_serializer) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
-
+
if(serializer->has_snapshot) {
memcpy(&serializer->status, &serializer->snapshot, sizeof(ndpi_private_serializer_status));
serializer->has_snapshot = 0;
@@ -1929,7 +1984,7 @@ void ndpi_serializer_rollback_snapshot(ndpi_serializer *_serializer) {
serializer->buffer.data[0] = ' ';
serializer->buffer.data[serializer->status.buffer.size_used-1] = '}';
}
- }
+ }
}
}