aboutsummaryrefslogtreecommitdiff
path: root/src/lib/ndpi_serializer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/ndpi_serializer.c')
-rw-r--r--src/lib/ndpi_serializer.c813
1 files changed, 467 insertions, 346 deletions
diff --git a/src/lib/ndpi_serializer.c b/src/lib/ndpi_serializer.c
index 5c4807eb6..a50f98860 100644
--- a/src/lib/ndpi_serializer.c
+++ b/src/lib/ndpi_serializer.c
@@ -146,15 +146,27 @@ void ndpi_reset_serializer(ndpi_serializer *_serializer) {
if(serializer->fmt == ndpi_serialization_format_json) {
u_int32_t buff_diff;
- serializer->status.size_used = 0;
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ serializer->status.buffer.size_used = 0;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
/* Note: please keep a space at the beginning as it is used for arrays when an end-of-record is used */
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, " {}");
- } else if(serializer->fmt == ndpi_serialization_format_csv)
- serializer->status.size_used = 0;
- else /* ndpi_serialization_format_tlv */
- serializer->status.size_used = 2 * sizeof(u_int8_t);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, " {}");
+ } else if(serializer->fmt == ndpi_serialization_format_csv) {
+ serializer->status.header.size_used = 0;
+ serializer->status.buffer.size_used = 0;
+ } else { /* ndpi_serialization_format_tlv */
+ serializer->status.buffer.size_used = 2 * sizeof(u_int8_t);
+ }
+}
+
+/* ********************************** */
+
+static int ndpi_init_serializer_buffer(ndpi_private_serializer_buffer *buffer, u_int32_t buffer_size) {
+ 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;
}
/* ********************************** */
@@ -166,16 +178,22 @@ int ndpi_init_serializer_ll(ndpi_serializer *_serializer,
memset(serializer, 0, sizeof(ndpi_private_serializer));
- serializer->initial_buffer_size = serializer->buffer_size = buffer_size;
- serializer->buffer = (u_int8_t *) calloc(serializer->buffer_size, sizeof(u_int8_t));
+ serializer->fmt = fmt;
- if(serializer->buffer == NULL)
+ if (ndpi_init_serializer_buffer(&serializer->buffer, buffer_size) != 0)
return(-1);
+
+ if(serializer->fmt == ndpi_serialization_format_json) {
+ /* nothing to do */
- serializer->fmt = fmt;
+ } else if (fmt == ndpi_serialization_format_csv) {
+ if (ndpi_init_serializer_buffer(&serializer->header, NDPI_SERIALIZER_DEFAULT_HEADER_SIZE) != 0)
+ return(-1);
- serializer->buffer[0] = 1; /* version */
- serializer->buffer[1] = (u_int8_t) fmt;
+ } else /* ndpi_serialization_format_tlv */ {
+ serializer->buffer.data[0] = 1; /* version */
+ serializer->buffer.data[1] = (u_int8_t) fmt;
+ }
serializer->csv_separator[0] = ',';
serializer->csv_separator[1] = '\0';
@@ -194,45 +212,106 @@ int ndpi_init_serializer(ndpi_serializer *_serializer,
/* ********************************** */
-static inline int ndpi_extend_serializer_buffer(ndpi_serializer *_serializer, u_int32_t min_len) {
+static inline int ndpi_extend_serializer_buffer(ndpi_private_serializer_buffer *buffer, u_int32_t min_len) {
u_int32_t new_size;
void *r;
- ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
if(min_len < NDPI_SERIALIZER_DEFAULT_BUFFER_INCR) {
- if(serializer->initial_buffer_size < NDPI_SERIALIZER_DEFAULT_BUFFER_INCR) {
- if(min_len < serializer->initial_buffer_size)
- min_len = serializer->initial_buffer_size;
+ if(buffer->initial_size < NDPI_SERIALIZER_DEFAULT_BUFFER_INCR) {
+ if(min_len < buffer->initial_size)
+ min_len = buffer->initial_size;
} else {
min_len = NDPI_SERIALIZER_DEFAULT_BUFFER_INCR;
}
}
- new_size = serializer->buffer_size + min_len;
+ new_size = buffer->size + min_len;
new_size = ((new_size / 4) + 1) * 4; /* required by zmq encryption */
- r = realloc((void *) serializer->buffer, new_size);
+ r = realloc((void *) buffer->data, new_size);
if(r == NULL)
return(-1);
- serializer->buffer = r;
- serializer->buffer_size = new_size;
+ buffer->data = r;
+ buffer->size = new_size;
return(0);
}
/* ********************************** */
+static inline int ndpi_serializer_check_header_room(ndpi_private_serializer *serializer, u_int32_t needed) {
+ 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;
+
+ buff_diff = serializer->header.size - serializer->status.header.size_used;
+
+ return buff_diff;
+}
+
+/* ********************************** */
+
+static inline int ndpi_serializer_header_uint32(ndpi_private_serializer *serializer, u_int32_t key) {
+ int room;
+
+ if (serializer->status.flags & NDPI_SERIALIZER_STATUS_HDR_DONE)
+ return 0;
+
+ room = ndpi_serializer_check_header_room(serializer, 12);
+
+ if (room < 0)
+ return -1;
+
+ 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;
+}
+
+/* ********************************** */
+
+static inline int ndpi_serializer_header_string(ndpi_private_serializer *serializer, const char *key, u_int16_t klen) {
+ int room;
+
+ if (serializer->status.flags & NDPI_SERIALIZER_STATUS_HDR_DONE)
+ return 0;
+
+ room = ndpi_serializer_check_header_room(serializer, klen + 4);
+
+ if (room < 0)
+ return -1;
+
+ if (serializer->status.header.size_used > 0) {
+ int slen = strlen(serializer->csv_separator);
+ memcpy(&serializer->header.data[serializer->status.header.size_used], serializer->csv_separator, slen);
+ serializer->status.header.size_used += slen;
+ }
+
+ if (klen > 0) {
+ memcpy(&serializer->header.data[serializer->status.header.size_used], key, klen);
+ serializer->status.header.size_used += klen;
+ }
+
+ serializer->header.data[serializer->status.header.size_used] = '\0';
+
+ return 0;
+}
+
+/* ********************************** */
+
char* ndpi_serializer_get_buffer(ndpi_serializer *_serializer, u_int32_t *buffer_len) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- char *buf = (char*)serializer->buffer;
+ char *buf = (char*)serializer->buffer.data;
- /* NULL terminate the buffer if there is space available */
- if(serializer->buffer_size > serializer->status.size_used)
- serializer->buffer[serializer->status.size_used] = '\0';
+ /* NULL terminate the buffer */
+ if(serializer->buffer.size > serializer->status.buffer.size_used) /* safety check */
+ serializer->buffer.data[serializer->status.buffer.size_used] = '\0';
- *buffer_len = serializer->status.size_used;
+ *buffer_len = serializer->status.buffer.size_used;
if(serializer->fmt == ndpi_serialization_format_json) {
while((buf[0] == '\0') || (buf[0] == ' '))
@@ -245,13 +324,13 @@ char* ndpi_serializer_get_buffer(ndpi_serializer *_serializer, u_int32_t *buffer
/* ********************************** */
u_int32_t ndpi_serializer_get_buffer_len(ndpi_serializer *_serializer) {
- return(((ndpi_private_serializer*)_serializer)->status.size_used);
+ return(((ndpi_private_serializer*)_serializer)->status.buffer.size_used);
}
/* ********************************** */
u_int32_t ndpi_serializer_get_internal_buffer_size(ndpi_serializer *_serializer) {
- return(((ndpi_private_serializer*)_serializer)->buffer_size);
+ return(((ndpi_private_serializer*)_serializer)->buffer.size);
}
/* ********************************** */
@@ -260,10 +339,10 @@ int ndpi_serializer_set_buffer_len(ndpi_serializer *_serializer, u_int32_t l) {
ndpi_private_serializer *p = (ndpi_private_serializer*)_serializer;
if(p) {
- if(p->buffer_size <= l)
+ if(p->buffer.size <= l)
return(-1); /* Invalid size */
- p->status.size_used = l;
+ p->status.buffer.size_used = l;
return(0);
}
@@ -272,6 +351,27 @@ int ndpi_serializer_set_buffer_len(ndpi_serializer *_serializer, u_int32_t l) {
/* ********************************** */
+/* Return the header automatically built from keys (CSV only) */
+char* ndpi_serializer_get_header(ndpi_serializer *_serializer, u_int32_t *buffer_len) {
+ ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
+ char *buf = (char*)serializer->header.data;
+
+ if(buf == NULL) {
+ *buffer_len = 0;
+ return "";
+ }
+
+ /* NULL terminate the buffer */
+ if(serializer->header.size > serializer->status.header.size_used) /* safety check */
+ serializer->header.data[serializer->status.header.size_used] = '\0';
+
+ *buffer_len = serializer->status.header.size_used;
+
+ return(buf);
+}
+
+/* ********************************** */
+
void ndpi_serializer_set_csv_separator(ndpi_serializer *_serializer, char separator) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
@@ -283,10 +383,16 @@ void ndpi_serializer_set_csv_separator(ndpi_serializer *_serializer, char separa
void ndpi_term_serializer(ndpi_serializer *_serializer) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- if(serializer->buffer) {
- free(serializer->buffer);
- serializer->buffer_size = 0;
- serializer->buffer = NULL;
+ if(serializer->buffer.data) {
+ free(serializer->buffer.data);
+ serializer->buffer.size = 0;
+ serializer->buffer.data = NULL;
+ }
+
+ if(serializer->header.data) {
+ free(serializer->header.data);
+ serializer->header.size = 0;
+ serializer->header.data = NULL;
}
}
@@ -296,8 +402,8 @@ static inline void ndpi_serialize_single_uint8(ndpi_private_serializer *serializ
u_int8_t s) {
u_int8_t v = s;
- memcpy(&serializer->buffer[serializer->status.size_used], &v, sizeof(u_int8_t));
- serializer->status.size_used += sizeof(u_int8_t);
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], &v, sizeof(u_int8_t));
+ serializer->status.buffer.size_used += sizeof(u_int8_t);
}
/* ********************************** */
@@ -306,8 +412,8 @@ static inline void ndpi_serialize_single_uint16(ndpi_private_serializer *seriali
u_int16_t s) {
u_int16_t v = htons(s);
- memcpy(&serializer->buffer[serializer->status.size_used], &v, sizeof(u_int16_t));
- serializer->status.size_used += sizeof(u_int16_t);
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], &v, sizeof(u_int16_t));
+ serializer->status.buffer.size_used += sizeof(u_int16_t);
}
/* ********************************** */
@@ -316,8 +422,8 @@ static inline void ndpi_serialize_single_uint32(ndpi_private_serializer *seriali
u_int32_t s) {
u_int32_t v = htonl(s);
- memcpy(&serializer->buffer[serializer->status.size_used], &v, sizeof(u_int32_t));
- serializer->status.size_used += sizeof(u_int32_t);
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], &v, sizeof(u_int32_t));
+ serializer->status.buffer.size_used += sizeof(u_int32_t);
}
/* ********************************** */
@@ -326,8 +432,8 @@ static inline void ndpi_serialize_single_uint64(ndpi_private_serializer *seriali
u_int64_t s) {
u_int64_t v = ndpi_htonll(s);
- memcpy(&serializer->buffer[serializer->status.size_used], &v, sizeof(u_int64_t));
- serializer->status.size_used += sizeof(u_int64_t);
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], &v, sizeof(u_int64_t));
+ serializer->status.buffer.size_used += sizeof(u_int64_t);
}
/* ********************************** */
@@ -335,8 +441,8 @@ static inline void ndpi_serialize_single_uint64(ndpi_private_serializer *seriali
/* TODO: fix portability across platforms */
static inline void ndpi_serialize_single_float(ndpi_private_serializer *serializer,
float s) {
- memcpy(&serializer->buffer[serializer->status.size_used], &s, sizeof(s));
- serializer->status.size_used += sizeof(float);
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], &s, sizeof(s));
+ serializer->status.buffer.size_used += sizeof(float);
}
/* ********************************** */
@@ -345,69 +451,69 @@ static inline void ndpi_serialize_single_string(ndpi_private_serializer *seriali
const char *s, u_int16_t slen) {
u_int16_t l = htons(slen);
- memcpy(&serializer->buffer[serializer->status.size_used], &l, sizeof(u_int16_t));
- serializer->status.size_used += sizeof(u_int16_t);
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], &l, sizeof(u_int16_t));
+ serializer->status.buffer.size_used += sizeof(u_int16_t);
if(slen > 0)
- memcpy(&serializer->buffer[serializer->status.size_used], s, slen);
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], s, slen);
- serializer->status.size_used += slen;
+ serializer->status.buffer.size_used += slen;
}
/* ********************************** */
static inline void ndpi_deserialize_single_uint8(ndpi_private_deserializer *deserializer,
u_int32_t offset, u_int8_t *s) {
- *s = (*((u_int8_t *) &deserializer->buffer[offset]));
+ *s = (*((u_int8_t *) &deserializer->buffer.data[offset]));
}
/* ********************************** */
static inline void ndpi_deserialize_single_uint16(ndpi_private_deserializer *deserializer,
u_int32_t offset, u_int16_t *s) {
- *s = ntohs(*((u_int16_t *) &deserializer->buffer[offset]));
+ *s = ntohs(*((u_int16_t *) &deserializer->buffer.data[offset]));
}
/* ********************************** */
static inline void ndpi_deserialize_single_uint32(ndpi_private_deserializer *deserializer,
u_int32_t offset, u_int32_t *s) {
- *s = ntohl(*((u_int32_t *) &deserializer->buffer[offset]));
+ *s = ntohl(*((u_int32_t *) &deserializer->buffer.data[offset]));
}
/* ********************************** */
static inline void ndpi_deserialize_single_int8(ndpi_private_deserializer *deserializer,
u_int32_t offset, int8_t *s) {
- *s = (*((int8_t *) &deserializer->buffer[offset]));
+ *s = (*((int8_t *) &deserializer->buffer.data[offset]));
}
/* ********************************** */
static inline void ndpi_deserialize_single_int16(ndpi_private_deserializer *deserializer,
u_int32_t offset, int16_t *s) {
- *s = ntohs(*((int16_t *) &deserializer->buffer[offset]));
+ *s = ntohs(*((int16_t *) &deserializer->buffer.data[offset]));
}
/* ********************************** */
static inline void ndpi_deserialize_single_int32(ndpi_private_deserializer *deserializer,
u_int32_t offset, int32_t *s) {
- *s = ntohl(*((int32_t *) &deserializer->buffer[offset]));
+ *s = ntohl(*((int32_t *) &deserializer->buffer.data[offset]));
}
/* ********************************** */
static inline void ndpi_deserialize_single_uint64(ndpi_private_deserializer *deserializer,
u_int32_t offset, u_int64_t *s) {
- *s = ndpi_ntohll(*(u_int64_t*)&deserializer->buffer[offset]);
+ *s = ndpi_ntohll(*(u_int64_t*)&deserializer->buffer.data[offset]);
}
/* ********************************** */
static inline void ndpi_deserialize_single_int64(ndpi_private_deserializer *deserializer,
u_int32_t offset, int64_t *s) {
- *s = ndpi_ntohll(*(int64_t*)&deserializer->buffer[offset]);
+ *s = ndpi_ntohll(*(int64_t*)&deserializer->buffer.data[offset]);
}
/* ********************************** */
@@ -415,15 +521,15 @@ static inline void ndpi_deserialize_single_int64(ndpi_private_deserializer *dese
/* TODO: fix portability across platforms */
static inline void ndpi_deserialize_single_float(ndpi_private_deserializer *deserializer,
u_int32_t offset, float *s) {
- *s = *(float*)&deserializer->buffer[offset];
+ *s = *(float*)&deserializer->buffer.data[offset];
}
/* ********************************** */
static inline void ndpi_deserialize_single_string(ndpi_private_deserializer *deserializer,
u_int32_t offset, ndpi_string *v) {
- v->str_len = ntohs(*((u_int16_t *) &deserializer->buffer[offset]));
- v->str = (char *) &deserializer->buffer[offset + sizeof(u_int16_t)];
+ v->str_len = ntohs(*((u_int16_t *) &deserializer->buffer.data[offset]));
+ v->str = (char *) &deserializer->buffer.data[offset + sizeof(u_int16_t)];
}
/* ********************************** */
@@ -436,39 +542,39 @@ static inline void ndpi_deserialize_single_string(ndpi_private_deserializer *des
int ndpi_serialize_raw_record(ndpi_serializer *_serializer,
u_char *record, u_int32_t record_len) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ 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;
- if(serializer->status.size_used == 3) /* Empty buffer [{} */
- serializer->status.size_used = 2; /* Remove {} */
+ if(serializer->status.buffer.size_used == 3) /* Empty buffer [{} */
+ serializer->status.buffer.size_used = 2; /* Remove {} */
else
needed += 2, add_comma = 1;
}
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
if(add_comma)
- serializer->buffer[serializer->status.size_used-1] = ',';
+ serializer->buffer.data[serializer->status.buffer.size_used-1] = ',';
else
- serializer->status.size_used--;
+ serializer->status.buffer.size_used--;
}
- memcpy(&serializer->buffer[serializer->status.size_used], record, record_len);
- serializer->status.size_used += record_len;
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used], record, record_len);
+ serializer->status.buffer.size_used += record_len;
if(serializer->fmt == ndpi_serialization_format_json) {
- serializer->buffer[serializer->status.size_used] = ']';
- if(add_comma) serializer->status.size_used++;
+ serializer->buffer.data[serializer->status.buffer.size_used] = ']';
+ if(add_comma) serializer->status.buffer.size_used++;
}
ndpi_serialize_end_of_record(_serializer);
@@ -480,29 +586,31 @@ int ndpi_serialize_raw_record(ndpi_serializer *_serializer,
int ndpi_serialize_end_of_record(ndpi_serializer *_serializer) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int16_t needed = sizeof(u_int8_t) /* type */;
if(serializer->fmt == ndpi_serialization_format_json)
needed += 1;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- if(serializer->fmt == ndpi_serialization_format_json) {
+ if(serializer->fmt == ndpi_serialization_format_csv) {
+ serializer->status.flags |= NDPI_SERIALIZER_STATUS_HDR_DONE;
+ } else if(serializer->fmt == ndpi_serialization_format_json) {
if(!(serializer->status.flags & NDPI_SERIALIZER_STATUS_ARRAY)) {
- serializer->buffer[0] = '[';
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used],
+ serializer->buffer.data[0] = '[';
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "]");
}
serializer->status.flags |= NDPI_SERIALIZER_STATUS_ARRAY | NDPI_SERIALIZER_STATUS_EOR;
serializer->status.flags &= ~NDPI_SERIALIZER_STATUS_COMMA;
} else {
- serializer->buffer[serializer->status.size_used++] = ndpi_serialization_end_of_record;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = ndpi_serialization_end_of_record;
}
serializer->status.flags &= ~NDPI_SERIALIZER_STATUS_NOT_EMPTY;
@@ -516,27 +624,27 @@ static inline void ndpi_serialize_json_pre(ndpi_serializer *_serializer) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_EOR) {
- serializer->status.size_used--; /* Remove ']' */
+ serializer->status.buffer.size_used--; /* Remove ']' */
serializer->status.flags &= ~NDPI_SERIALIZER_STATUS_EOR;
- serializer->buffer[serializer->status.size_used++] = ',';
- serializer->buffer[serializer->status.size_used++] = '{';
+ serializer->buffer.data[serializer->status.buffer.size_used++] = ',';
+ serializer->buffer.data[serializer->status.buffer.size_used++] = '{';
} else {
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_ARRAY)
- serializer->status.size_used--; /* Remove ']' */
+ serializer->status.buffer.size_used--; /* Remove ']' */
- serializer->status.size_used--; /* Remove '}' */
+ serializer->status.buffer.size_used--; /* Remove '}' */
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST) {
- serializer->status.size_used--; /* Remove ']' */
+ serializer->status.buffer.size_used--; /* Remove ']' */
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_SOL)
serializer->status.flags &= ~NDPI_SERIALIZER_STATUS_SOL;
else
- serializer->buffer[serializer->status.size_used++] = ',';
+ serializer->buffer.data[serializer->status.buffer.size_used++] = ',';
} else {
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_SOB)
serializer->status.flags &= ~NDPI_SERIALIZER_STATUS_SOB;
else if(serializer->status.flags & NDPI_SERIALIZER_STATUS_COMMA)
- serializer->buffer[serializer->status.size_used++] = ',';
+ serializer->buffer.data[serializer->status.buffer.size_used++] = ',';
}
}
}
@@ -547,12 +655,12 @@ static inline void ndpi_serialize_json_post(ndpi_serializer *_serializer) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)
- serializer->buffer[serializer->status.size_used++] = ']';
+ serializer->buffer.data[serializer->status.buffer.size_used++] = ']';
- serializer->buffer[serializer->status.size_used++] = '}';
+ serializer->buffer.data[serializer->status.buffer.size_used++] = '}';
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_ARRAY)
- serializer->buffer[serializer->status.size_used++] = ']';
+ serializer->buffer.data[serializer->status.buffer.size_used++] = ']';
serializer->status.flags |= NDPI_SERIALIZER_STATUS_COMMA;
}
@@ -581,7 +689,7 @@ static inline ndpi_serialization_type ndpi_serialize_key_uint32(ndpi_private_ser
int ndpi_serialize_uint32_uint32(ndpi_serializer *_serializer,
u_int32_t key, u_int32_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int16_t needed =
sizeof(u_int8_t) /* type */ +
sizeof(u_int32_t) /* key */ +
@@ -591,33 +699,34 @@ int ndpi_serialize_uint32_uint32(ndpi_serializer *_serializer,
needed += 24;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.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.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used],
+ 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) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
- "%s%u", (serializer->status.size_used > 0) ? serializer->csv_separator : "", value);
+ if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ "%s%u", (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "", value);
} else {
ndpi_serialization_type kt;
u_int8_t type = 0;
- u_int32_t type_offset = serializer->status.size_used++;
+ u_int32_t type_offset = serializer->status.buffer.size_used++;
kt = ndpi_serialize_key_uint32(serializer, key);
type = (kt << 4);
@@ -633,7 +742,7 @@ int ndpi_serialize_uint32_uint32(ndpi_serializer *_serializer,
type |= ndpi_serialization_uint32;
}
- serializer->buffer[type_offset] = type;
+ serializer->buffer.data[type_offset] = type;
}
serializer->status.flags |= NDPI_SERIALIZER_STATUS_NOT_EMPTY;
@@ -645,7 +754,7 @@ int ndpi_serialize_uint32_uint32(ndpi_serializer *_serializer,
int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer,
u_int32_t key, u_int64_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int16_t needed =
sizeof(u_int8_t) /* type */ +
sizeof(u_int32_t) /* key */ +
@@ -655,30 +764,31 @@ int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer,
needed += 32;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff,
+ 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.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff,
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%llu", (unsigned long long)value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
+ if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%s%llu",
- (serializer->status.size_used > 0) ? serializer->csv_separator : "",
+ (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "",
(unsigned long long)value);
} else {
if(value <= 0xffffffff) {
@@ -686,7 +796,7 @@ int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer,
} else {
ndpi_serialization_type kt;
u_int8_t type = 0;
- u_int32_t type_offset = serializer->status.size_used++;
+ u_int32_t type_offset = serializer->status.buffer.size_used++;
kt = ndpi_serialize_key_uint32(serializer, key);
type = (kt << 4);
@@ -694,7 +804,7 @@ int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer,
ndpi_serialize_single_uint64(serializer, value);
type |= ndpi_serialization_uint64;
- serializer->buffer[type_offset] = type;
+ serializer->buffer.data[type_offset] = type;
}
}
@@ -707,7 +817,7 @@ int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer,
int ndpi_serialize_uint32_int32(ndpi_serializer *_serializer,
u_int32_t key, int32_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int16_t needed =
sizeof(u_int8_t) /* type */ +
sizeof(u_int32_t) /* key */ +
@@ -717,33 +827,34 @@ int ndpi_serialize_uint32_int32(ndpi_serializer *_serializer,
needed += 24;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.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.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used],
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%d", value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
- "%s%d", (serializer->status.size_used > 0) ? serializer->csv_separator : "", value);
+ if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ "%s%d", (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "", value);
} else {
ndpi_serialization_type kt;
u_int8_t type = 0;
- u_int32_t type_offset = serializer->status.size_used++;
+ u_int32_t type_offset = serializer->status.buffer.size_used++;
kt = ndpi_serialize_key_uint32(serializer, key);
type = (kt << 4);
@@ -759,7 +870,7 @@ int ndpi_serialize_uint32_int32(ndpi_serializer *_serializer,
type |= ndpi_serialization_int32;
}
- serializer->buffer[type_offset] = type;
+ serializer->buffer.data[type_offset] = type;
}
serializer->status.flags |= NDPI_SERIALIZER_STATUS_NOT_EMPTY;
@@ -771,7 +882,7 @@ int ndpi_serialize_uint32_int32(ndpi_serializer *_serializer,
int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer,
u_int32_t key, int64_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int16_t needed =
sizeof(u_int8_t) /* type */ +
sizeof(u_int32_t) /* key */ +
@@ -781,30 +892,31 @@ int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer,
needed += 32;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.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.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used],
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%lld", (long long int)value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
+ if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%s%lld",
- (serializer->status.size_used > 0) ? serializer->csv_separator : "",
+ (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "",
(long long int)value);
}
@@ -814,7 +926,7 @@ int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer,
} else {
ndpi_serialization_type kt;
u_int8_t type = 0;
- u_int32_t type_offset = serializer->status.size_used++;
+ u_int32_t type_offset = serializer->status.buffer.size_used++;
kt = ndpi_serialize_key_uint32(serializer, key);
type = (kt << 4);
@@ -822,7 +934,7 @@ int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer,
ndpi_serialize_single_uint64(serializer, value);
type |= ndpi_serialization_int64;
- serializer->buffer[type_offset] = type;
+ serializer->buffer.data[type_offset] = type;
}
}
@@ -836,7 +948,7 @@ int ndpi_serialize_uint32_float(ndpi_serializer *_serializer,
u_int32_t key, float value,
const char *format /* e.f. "%.2f" */) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int16_t needed =
sizeof(u_int8_t) /* type */ +
sizeof(u_int32_t) /* key */ +
@@ -846,31 +958,32 @@ int ndpi_serialize_uint32_float(ndpi_serializer *_serializer,
needed += 32;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, "\"%u\":", key);
- buff_diff = serializer->buffer_size - serializer->status.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.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, format, value);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, "%s",
- (serializer->status.size_used > 0) ? serializer->csv_separator : "");
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, format, value);
+ if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, "%s",
+ (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "");
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
} else {
ndpi_serialization_type kt;
u_int8_t type = 0;
- u_int32_t type_offset = serializer->status.size_used++;
+ u_int32_t type_offset = serializer->status.buffer.size_used++;
kt = ndpi_serialize_key_uint32(serializer, key);
type = (kt << 4);
@@ -878,7 +991,7 @@ int ndpi_serialize_uint32_float(ndpi_serializer *_serializer,
ndpi_serialize_single_float(serializer, value);
type |= ndpi_serialization_float;
- serializer->buffer[type_offset] = type;
+ serializer->buffer.data[type_offset] = type;
}
serializer->status.flags |= NDPI_SERIALIZER_STATUS_NOT_EMPTY;
@@ -890,7 +1003,7 @@ int ndpi_serialize_uint32_float(ndpi_serializer *_serializer,
static int ndpi_serialize_uint32_binary(ndpi_serializer *_serializer,
u_int32_t key, const char *value, u_int16_t slen) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed =
sizeof(u_int8_t) /* type */ +
sizeof(u_int32_t) /* key */ +
@@ -901,30 +1014,31 @@ static int ndpi_serialize_uint32_binary(ndpi_serializer *_serializer,
needed += 24 + slen;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.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.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += ndpi_json_string_escape(value, slen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ serializer->status.buffer.size_used += ndpi_json_string_escape(value, slen,
+ (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);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
- "%s%s", (serializer->status.size_used > 0) ? serializer->csv_separator : "", value);
+ if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ "%s%s", (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "", value);
} else {
ndpi_serialization_type kt;
u_int8_t type = 0;
- u_int32_t type_offset = serializer->status.size_used++;
+ u_int32_t type_offset = serializer->status.buffer.size_used++;
kt = ndpi_serialize_key_uint32(serializer, key);
type = (kt << 4);
@@ -932,7 +1046,7 @@ static int ndpi_serialize_uint32_binary(ndpi_serializer *_serializer,
ndpi_serialize_single_string(serializer, value, slen);
type |= ndpi_serialization_string;
- serializer->buffer[type_offset] = type;
+ serializer->buffer.data[type_offset] = type;
}
serializer->status.flags |= NDPI_SERIALIZER_STATUS_NOT_EMPTY;
@@ -952,7 +1066,7 @@ int ndpi_serialize_uint32_string(ndpi_serializer *_serializer,
int ndpi_serialize_uint32_boolean(ndpi_serializer *_serializer,
u_int32_t key, u_int8_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed = 24;
if(serializer->fmt != ndpi_serialization_format_json &&
@@ -960,29 +1074,30 @@ int ndpi_serialize_uint32_boolean(ndpi_serializer *_serializer,
return -1;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.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.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.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);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
- "%s%s", (serializer->status.size_used > 0) ? serializer->csv_separator : "",
+ if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ "%s%s", (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "",
value ? "true" : "false");
}
@@ -996,7 +1111,7 @@ static int ndpi_serialize_binary_int32(ndpi_serializer *_serializer,
const char *key, u_int16_t klen,
int32_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
if(ndpi_is_number(key, klen))
@@ -1012,41 +1127,42 @@ static int ndpi_serialize_binary_int32(ndpi_serializer *_serializer,
needed += 16 + klen;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += ndpi_json_string_escape(key, klen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff, ":");
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ 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->buffer.data[serializer->status.buffer.size_used], buff_diff, ":");
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff, "%d", value);
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, "%d", value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
- "%s%d", (serializer->status.size_used > 0) ? serializer->csv_separator : "", value);
+ if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ "%s%d", (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "", value);
} else {
if(value <= 127 && value >= -128) {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_int8;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_int8;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_uint8(serializer, value);
} else if(value <= 32767 && value >= -32768) {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_int16;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_int16;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_uint16(serializer, value);
} else {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_int32;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_int32;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_uint32(serializer, value);
}
@@ -1070,7 +1186,7 @@ int ndpi_serialize_binary_int64(ndpi_serializer *_serializer,
const char *key, u_int16_t klen,
int64_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
if(ndpi_is_number(key, klen))
@@ -1086,38 +1202,39 @@ int ndpi_serialize_binary_int64(ndpi_serializer *_serializer,
needed += 16 + klen;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += ndpi_json_string_escape(key, klen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff,
+ 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->buffer.data[serializer->status.buffer.size_used], buff_diff,
":");
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff,
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%lld", (long long int)value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
- "%s%lld", (serializer->status.size_used > 0) ? serializer->csv_separator : "",
+ if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ "%s%lld", (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "",
(long long int)value);
} else {
if ((value & 0xFFFFFFFF) == value) {
return(ndpi_serialize_string_int32(_serializer, key, value));
} else {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_int64;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_int64;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_uint32(serializer, value);
}
@@ -1139,7 +1256,7 @@ int ndpi_serialize_string_int64(ndpi_serializer *_serializer,
static int ndpi_serialize_binary_uint32(ndpi_serializer *_serializer,
const char *key, u_int16_t klen, u_int32_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
if(ndpi_is_number(key, klen))
@@ -1155,44 +1272,45 @@ static int ndpi_serialize_binary_uint32(ndpi_serializer *_serializer,
needed += 16 + klen;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += ndpi_json_string_escape(key, klen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ 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.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used],
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, ":");
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used],
+ 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) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
- "%s%u", (serializer->status.size_used > 0) ? serializer->csv_separator : "", value);
+ if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ "%s%u", (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "", value);
} else {
if(value <= 0xff) {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_uint8;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_uint8;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_uint8(serializer, value);
} else if(value <= 0xffff) {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_uint16;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_uint16;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_uint16(serializer, value);
} else {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_uint32;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_uint32;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_uint32(serializer, value);
}
@@ -1237,7 +1355,7 @@ static int ndpi_serialize_binary_uint64(ndpi_serializer *_serializer,
const char *key, u_int16_t klen,
u_int64_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
if(ndpi_is_number(key, klen))
@@ -1253,38 +1371,39 @@ static int ndpi_serialize_binary_uint64(ndpi_serializer *_serializer,
needed += 32 + klen;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += ndpi_json_string_escape(key, klen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff,
+ 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->buffer.data[serializer->status.buffer.size_used], buff_diff,
":");
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff,
+ serializer->status.buffer.size_used += snprintf((char *)
+ &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%llu", (unsigned long long)value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
- "%s%llu", (serializer->status.size_used > 0) ? serializer->csv_separator : "",
+ if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ "%s%llu", (serializer->status.buffer.size_used > 0) ? serializer->csv_separator : "",
(unsigned long long)value);
} else {
if(value <= 0xffffffff) {
return(ndpi_serialize_string_uint32(_serializer, key, value));
} else {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_uint64;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_uint64;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_uint64(serializer, value);
}
@@ -1309,7 +1428,7 @@ static int ndpi_serialize_binary_float(ndpi_serializer *_serializer,
float value,
const char *format /* e.f. "%.2f" */) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
if(ndpi_is_number(key, klen))
@@ -1325,32 +1444,32 @@ static int ndpi_serialize_binary_float(ndpi_serializer *_serializer,
needed += 32 + klen;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += ndpi_json_string_escape(key, klen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
- serializer->buffer[serializer->status.size_used] = ':';
- serializer->status.size_used++;
+ 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->buffer.data[serializer->status.buffer.size_used] = ':';
+ serializer->status.buffer.size_used++;
}
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, format, value);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- if(serializer->status.size_used > 0)
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, "%s", serializer->csv_separator);
-
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, format, value);
+ if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
+ if(serializer->status.buffer.size_used > 0)
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, "%s", serializer->csv_separator);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
} else {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_float;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_float;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_float(serializer, value);
@@ -1379,7 +1498,7 @@ static int ndpi_serialize_binary_raw(ndpi_serializer *_serializer,
u_int16_t vlen,
u_int8_t escape) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
needed =
@@ -1393,36 +1512,37 @@ static int ndpi_serialize_binary_raw(ndpi_serializer *_serializer,
needed += 16 + klen + vlen;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += ndpi_json_string_escape(key, klen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, ":");
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ 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->buffer.data[serializer->status.buffer.size_used], buff_diff, ":");
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if (escape)
- serializer->status.size_used += ndpi_json_string_escape(value, vlen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
+ serializer->status.buffer.size_used += ndpi_json_string_escape(value, vlen,
+ (char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
else
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
value, vlen);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
+ if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%s%s", ndpi_serialize_is_not_empty(_serializer) ? serializer->csv_separator : "",
value);
} else {
- serializer->buffer[serializer->status.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_string;
+ serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_string;
ndpi_serialize_single_string(serializer, key, klen);
ndpi_serialize_single_string(serializer, value, vlen);
@@ -1479,7 +1599,7 @@ int ndpi_serialize_string_raw(ndpi_serializer *_serializer,
int ndpi_serialize_string_boolean(ndpi_serializer *_serializer,
const char *key, u_int8_t value) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int16_t klen = strlen(key);
u_int32_t needed;
@@ -1493,30 +1613,31 @@ int ndpi_serialize_string_boolean(ndpi_serializer *_serializer,
needed = klen + 16;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->fmt == ndpi_serialization_format_json) {
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.size_used += ndpi_json_string_escape(key, klen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff, ":");
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ 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->buffer.data[serializer->status.buffer.size_used], buff_diff, ":");
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.size_used += snprintf((char *)
- &serializer->buffer[serializer->status.size_used], buff_diff, "%s",
+ 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);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff,
+ if (ndpi_serializer_header_string(serializer, key, strlen(key)) < 0) return(-1);
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%s%s", ndpi_serialize_is_not_empty(_serializer) ? serializer->csv_separator : "",
value ? "true" : "false");
}
@@ -1531,7 +1652,7 @@ int ndpi_serialize_string_boolean(ndpi_serializer *_serializer,
int ndpi_serialize_start_of_list(ndpi_serializer *_serializer,
const char *key) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed, klen = strlen(key);
if(serializer->fmt != ndpi_serialization_format_json)
@@ -1540,18 +1661,18 @@ int ndpi_serialize_start_of_list(ndpi_serializer *_serializer,
needed = 16 + klen;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
ndpi_serialize_json_pre(_serializer);
- serializer->status.size_used += ndpi_json_string_escape(key, klen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ 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.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, ": [");
+ serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ": [");
serializer->status.flags |= NDPI_SERIALIZER_STATUS_LIST | NDPI_SERIALIZER_STATUS_SOL;
@@ -1583,7 +1704,7 @@ int ndpi_serialize_end_of_list(ndpi_serializer *_serializer) {
int ndpi_serialize_start_of_block(ndpi_serializer *_serializer,
const char *key) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed, klen = strlen(key);
if(serializer->fmt != ndpi_serialization_format_json)
@@ -1592,17 +1713,17 @@ int ndpi_serialize_start_of_block(ndpi_serializer *_serializer,
needed = 16 + klen;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
ndpi_serialize_json_pre(_serializer);
- serializer->status.size_used += ndpi_json_string_escape(key, klen,
- (char *) &serializer->buffer[serializer->status.size_used], buff_diff);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
- serializer->status.size_used += snprintf((char *) &serializer->buffer[serializer->status.size_used], buff_diff, ": {");
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ 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->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;
@@ -1615,7 +1736,7 @@ int ndpi_serialize_start_of_block(ndpi_serializer *_serializer,
/* Serialize end of nested block (JSON only)*/
int ndpi_serialize_end_of_block(ndpi_serializer *_serializer) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
u_int32_t needed;
if(serializer->fmt != ndpi_serialization_format_json)
@@ -1624,15 +1745,15 @@ int ndpi_serialize_end_of_block(ndpi_serializer *_serializer) {
needed = 4;
if(buff_diff < needed) {
- if(ndpi_extend_serializer_buffer(_serializer, needed - buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, needed - buff_diff) < 0)
return(-1);
- buff_diff = serializer->buffer_size - serializer->status.size_used;
+ buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_SOB) /* Empty block */
serializer->status.flags &= ~NDPI_SERIALIZER_STATUS_SOB;
- // buff_diff = serializer->buffer_size - serializer->status.size_used;
+ // buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
ndpi_serialize_json_post(_serializer);
return(0);
@@ -1666,10 +1787,10 @@ void ndpi_serializer_rollback_snapshot(ndpi_serializer *_serializer) {
if(serializer->fmt == ndpi_serialization_format_json) {
if(serializer->status.flags & NDPI_SERIALIZER_STATUS_ARRAY) {
- serializer->buffer[serializer->status.size_used-1] = ']';
+ serializer->buffer.data[serializer->status.buffer.size_used-1] = ']';
} else {
- serializer->buffer[0] = ' ';
- serializer->buffer[serializer->status.size_used-1] = '}';
+ serializer->buffer.data[0] = ' ';
+ serializer->buffer.data[serializer->status.buffer.size_used-1] = '}';
}
}
}
@@ -1686,13 +1807,13 @@ int ndpi_init_deserializer_buf(ndpi_deserializer *_deserializer,
if(serialized_buffer_len < (2 * sizeof(u_int8_t)))
return(-1);
- deserializer->buffer = serialized_buffer;
+ deserializer->buffer.data = serialized_buffer;
- if(deserializer->buffer[0] != 1)
+ if(deserializer->buffer.data[0] != 1)
return(-2); /* Invalid version */
- deserializer->buffer_size = serialized_buffer_len;
- deserializer->fmt = deserializer->buffer[1];
+ deserializer->buffer.size = serialized_buffer_len;
+ deserializer->fmt = deserializer->buffer.data[1];
ndpi_reset_serializer(_deserializer);
return(0);
@@ -1705,8 +1826,8 @@ int ndpi_init_deserializer(ndpi_deserializer *deserializer,
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
return(ndpi_init_deserializer_buf(deserializer,
- serializer->buffer,
- serializer->status.size_used));
+ serializer->buffer.data,
+ serializer->status.buffer.size_used));
}
/* ********************************** */
@@ -1721,10 +1842,10 @@ ndpi_serialization_format ndpi_deserialize_get_format(ndpi_deserializer *_deseri
static inline ndpi_serialization_type ndpi_deserialize_get_key_subtype(ndpi_private_deserializer *deserializer) {
u_int8_t type;
- if(deserializer->status.size_used >= deserializer->buffer_size)
+ if(deserializer->status.buffer.size_used >= deserializer->buffer.size)
return(ndpi_serialization_unknown);
- type = deserializer->buffer[deserializer->status.size_used];
+ type = deserializer->buffer.data[deserializer->status.buffer.size_used];
return((ndpi_serialization_type) (type >> 4));
}
@@ -1734,10 +1855,10 @@ static inline ndpi_serialization_type ndpi_deserialize_get_key_subtype(ndpi_priv
static inline ndpi_serialization_type ndpi_deserialize_get_value_subtype(ndpi_private_deserializer *deserializer) {
u_int8_t type;
- if(deserializer->status.size_used >= deserializer->buffer_size)
+ if(deserializer->status.buffer.size_used >= deserializer->buffer.size)
return(ndpi_serialization_unknown);
- type = deserializer->buffer[deserializer->status.size_used];
+ type = deserializer->buffer.data[deserializer->status.buffer.size_used];
return(ndpi_serialization_type) (type & 0xf);
}
@@ -1783,13 +1904,13 @@ ndpi_serialization_type ndpi_deserialize_get_item_type(ndpi_deserializer *_deser
/* ********************************** */
static inline int ndpi_deserialize_get_single_string_size(ndpi_private_deserializer *deserializer, u_int32_t offset) {
- u_int32_t buff_diff = deserializer->buffer_size - offset;
+ u_int32_t buff_diff = deserializer->buffer.size - offset;
u_int16_t expected, str_len;
expected = sizeof(u_int16_t) /* len */;
if(buff_diff < expected) return(-2);
- str_len = ntohs(*((u_int16_t *) &deserializer->buffer[offset]));
+ str_len = ntohs(*((u_int16_t *) &deserializer->buffer.data[offset]));
expected += str_len;
if(buff_diff < expected) return(-2);
@@ -1841,7 +1962,7 @@ static inline int ndpi_deserialize_get_single_size(ndpi_private_deserializer *de
int ndpi_deserialize_next(ndpi_deserializer *_deserializer) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer *) _deserializer;
- u_int32_t buff_diff = deserializer->buffer_size - deserializer->status.size_used;
+ u_int32_t buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
ndpi_serialization_type kt, et;
u_int16_t expected;
int size;
@@ -1851,20 +1972,20 @@ int ndpi_deserialize_next(ndpi_deserializer *_deserializer) {
if(buff_diff < expected) return(-2);
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
et = ndpi_deserialize_get_value_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
- deserializer->status.size_used += expected;
+ deserializer->status.buffer.size_used += expected;
return(0);
}
@@ -1874,7 +1995,7 @@ int ndpi_deserialize_next(ndpi_deserializer *_deserializer) {
int ndpi_deserialize_key_uint32(ndpi_deserializer *_deserializer,
u_int32_t *key) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer*)_deserializer;
- u_int32_t offset, buff_diff = deserializer->buffer_size - deserializer->status.size_used;
+ u_int32_t offset, buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
ndpi_serialization_type kt;
u_int16_t expected;
u_int16_t v16;
@@ -1886,10 +2007,10 @@ int ndpi_deserialize_key_uint32(ndpi_deserializer *_deserializer,
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
- offset = deserializer->status.size_used + expected;
+ offset = deserializer->status.buffer.size_used + expected;
switch(kt) {
case ndpi_serialization_uint32:
@@ -1917,7 +2038,7 @@ int ndpi_deserialize_key_string(ndpi_deserializer *_deserializer,
ndpi_string *key) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer*)_deserializer;
ndpi_serialization_type kt;
- u_int32_t buff_diff = deserializer->buffer_size - deserializer->status.size_used;
+ u_int32_t buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
u_int16_t expected;
int size;
@@ -1926,10 +2047,10 @@ int ndpi_deserialize_key_string(ndpi_deserializer *_deserializer,
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
- ndpi_deserialize_single_string(deserializer, deserializer->status.size_used + expected, key);
+ ndpi_deserialize_single_string(deserializer, deserializer->status.buffer.size_used + expected, key);
return(0);
}
@@ -1940,7 +2061,7 @@ int ndpi_deserialize_value_uint32(ndpi_deserializer *_deserializer,
u_int32_t *value) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer*)_deserializer;
ndpi_serialization_type kt, et;
- u_int32_t offset, buff_diff = deserializer->buffer_size - deserializer->status.size_used;
+ u_int32_t offset, buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
u_int16_t v16;
u_int8_t v8;
u_int16_t expected;
@@ -1950,16 +2071,16 @@ int ndpi_deserialize_value_uint32(ndpi_deserializer *_deserializer,
if(buff_diff < expected) return(-2);
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
et = ndpi_deserialize_get_value_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
- offset = deserializer->status.size_used + expected;
+ offset = deserializer->status.buffer.size_used + expected;
switch(et) {
case ndpi_serialization_uint32:
@@ -1986,7 +2107,7 @@ int ndpi_deserialize_value_uint64(ndpi_deserializer *_deserializer,
u_int64_t *value) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer*)_deserializer;
ndpi_serialization_type kt, et;
- u_int32_t buff_diff = deserializer->buffer_size - deserializer->status.size_used;
+ u_int32_t buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
u_int32_t v32;
u_int16_t expected;
int size;
@@ -1996,13 +2117,13 @@ int ndpi_deserialize_value_uint64(ndpi_deserializer *_deserializer,
if(buff_diff < expected) return(-2);
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
et = ndpi_deserialize_get_value_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
if(et != ndpi_serialization_uint64) {
@@ -2012,7 +2133,7 @@ int ndpi_deserialize_value_uint64(ndpi_deserializer *_deserializer,
return(rc);
}
- ndpi_deserialize_single_uint64(deserializer, deserializer->status.size_used + expected, value);
+ ndpi_deserialize_single_uint64(deserializer, deserializer->status.buffer.size_used + expected, value);
return(0);
}
@@ -2023,7 +2144,7 @@ int ndpi_deserialize_value_int32(ndpi_deserializer *_deserializer,
int32_t *value) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer*)_deserializer;
ndpi_serialization_type kt, et;
- u_int32_t offset, buff_diff = deserializer->buffer_size - deserializer->status.size_used;
+ u_int32_t offset, buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
int16_t v16;
int8_t v8;
u_int16_t expected;
@@ -2033,16 +2154,16 @@ int ndpi_deserialize_value_int32(ndpi_deserializer *_deserializer,
if(buff_diff < expected) return(-2);
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
et = ndpi_deserialize_get_value_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
- offset = deserializer->status.size_used + expected;
+ offset = deserializer->status.buffer.size_used + expected;
switch(et) {
case ndpi_serialization_int32:
@@ -2069,7 +2190,7 @@ int ndpi_deserialize_value_int64(ndpi_deserializer *_deserializer,
int64_t *value) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer*)_deserializer;
ndpi_serialization_type kt, et;
- u_int32_t buff_diff = deserializer->buffer_size - deserializer->status.size_used;
+ u_int32_t buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
int32_t v32;
u_int16_t expected;
int size;
@@ -2079,13 +2200,13 @@ int ndpi_deserialize_value_int64(ndpi_deserializer *_deserializer,
if(buff_diff < expected) return(-2);
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
et = ndpi_deserialize_get_value_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
if(et != ndpi_serialization_int64) {
@@ -2095,7 +2216,7 @@ int ndpi_deserialize_value_int64(ndpi_deserializer *_deserializer,
return(rc);
}
- ndpi_deserialize_single_int64(deserializer, deserializer->status.size_used + expected, value);
+ ndpi_deserialize_single_int64(deserializer, deserializer->status.buffer.size_used + expected, value);
return(0);
}
@@ -2106,7 +2227,7 @@ int ndpi_deserialize_value_float(ndpi_deserializer *_deserializer,
float *value) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer*)_deserializer;
ndpi_serialization_type kt, et;
- u_int32_t buff_diff = deserializer->buffer_size - deserializer->status.size_used;
+ u_int32_t buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
u_int16_t expected;
int size;
@@ -2114,19 +2235,19 @@ int ndpi_deserialize_value_float(ndpi_deserializer *_deserializer,
if(buff_diff < expected) return(-2);
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
et = ndpi_deserialize_get_value_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
if(et != ndpi_serialization_float)
return(-1);
- ndpi_deserialize_single_float(deserializer, deserializer->status.size_used + expected, value);
+ ndpi_deserialize_single_float(deserializer, deserializer->status.buffer.size_used + expected, value);
return(0);
}
@@ -2137,7 +2258,7 @@ int ndpi_deserialize_value_string(ndpi_deserializer *_deserializer,
ndpi_string *value) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer*)_deserializer;
ndpi_serialization_type kt, et;
- u_int32_t buff_diff = deserializer->buffer_size - deserializer->status.size_used;
+ u_int32_t buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
u_int16_t expected;
int size;
@@ -2145,19 +2266,19 @@ int ndpi_deserialize_value_string(ndpi_deserializer *_deserializer,
if(buff_diff < expected) return(-2);
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
et = ndpi_deserialize_get_value_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
if(et != ndpi_serialization_string)
return(-1);
- ndpi_deserialize_single_string(deserializer, deserializer->status.size_used + expected, value);
+ ndpi_deserialize_single_string(deserializer, deserializer->status.buffer.size_used + expected, value);
return(0);
}
@@ -2168,8 +2289,8 @@ int ndpi_deserialize_value_string(ndpi_deserializer *_deserializer,
int ndpi_deserialize_clone_item(ndpi_deserializer *_deserializer, ndpi_serializer *_serializer) {
ndpi_private_deserializer *deserializer = (ndpi_private_deserializer *) _deserializer;
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
- u_int32_t src_buff_diff = deserializer->buffer_size - deserializer->status.size_used;
- u_int32_t dst_buff_diff = serializer->buffer_size - serializer->status.size_used;
+ u_int32_t src_buff_diff = deserializer->buffer.size - deserializer->status.buffer.size_used;
+ u_int32_t dst_buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
ndpi_serialization_type kt, et;
u_int16_t expected;
int size;
@@ -2182,30 +2303,30 @@ int ndpi_deserialize_clone_item(ndpi_deserializer *_deserializer, ndpi_serialize
if(src_buff_diff < expected) return(-2);
kt = ndpi_deserialize_get_key_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, kt, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
et = ndpi_deserialize_get_value_subtype(deserializer);
- size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.size_used + expected);
+ size = ndpi_deserialize_get_single_size(deserializer, et, deserializer->status.buffer.size_used + expected);
if(size < 0) return(-2);
expected += size;
if(dst_buff_diff < expected) {
- if(ndpi_extend_serializer_buffer(_serializer, expected - dst_buff_diff) < 0)
+ if(ndpi_extend_serializer_buffer(&serializer->buffer, expected - dst_buff_diff) < 0)
return(-1);
- dst_buff_diff = serializer->buffer_size - serializer->status.size_used;
+ dst_buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- memcpy(&serializer->buffer[serializer->status.size_used],
- &deserializer->buffer[deserializer->status.size_used],
+ memcpy(&serializer->buffer.data[serializer->status.buffer.size_used],
+ &deserializer->buffer.data[deserializer->status.buffer.size_used],
expected);
- serializer->status.size_used += expected;
+ serializer->status.buffer.size_used += expected;
return(0);
}