From: Victor Julien Date: Thu, 18 Feb 2016 09:36:20 +0000 (+0100) Subject: json: make membuffer helper public X-Git-Tag: suricata-3.0.1RC1~127 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=40cf1f8ef73cd8688e53a5c44265aaced7dce271;p=thirdparty%2Fsuricata.git json: make membuffer helper public Make json_t to MemBuffer helper public so it can reused. --- diff --git a/src/output-json.c b/src/output-json.c index 5e048fe4e7..69e5c577e0 100644 --- a/src/output-json.c +++ b/src/output-json.c @@ -333,18 +333,13 @@ json_t *CreateJSONHeaderWithTxId(Packet *p, int direction_sensitive, char *event return js; } -/* helper struct for the callback */ -typedef struct MemBufferWrapper_ { - MemBuffer **buffer; -} MemBufferWrapper; - -static int MemBufferCallback(const char *str, size_t size, void *data) +int OutputJSONMemBufferCallback(const char *str, size_t size, void *data) { - MemBufferWrapper *wrapper = data; + OutputJSONMemBufferWrapper *wrapper = data; MemBuffer **memb = wrapper->buffer; if (MEMBUFFER_OFFSET(*memb) + size >= MEMBUFFER_SIZE(*memb)) { - MemBufferExpand(memb, OUTPUT_BUFFER_SIZE); + MemBufferExpand(memb, wrapper->expand_by); } MemBufferWriteRaw((*memb), str, size); @@ -362,9 +357,12 @@ int OutputJSONBuffer(json_t *js, LogFileCtx *file_ctx, MemBuffer **buffer) MemBufferWriteRaw((*buffer), file_ctx->prefix, file_ctx->prefix_len); } - MemBufferWrapper wrapper = { .buffer = buffer }; + OutputJSONMemBufferWrapper wrapper = { + .buffer = buffer, + .expand_by = OUTPUT_BUFFER_SIZE + }; - int r = json_dump_callback(js, MemBufferCallback, &wrapper, + int r = json_dump_callback(js, OutputJSONMemBufferCallback, &wrapper, JSON_PRESERVE_ORDER|JSON_COMPACT|JSON_ENSURE_ASCII| #ifdef JSON_ESCAPE_SLASH JSON_ESCAPE_SLASH diff --git a/src/output-json.h b/src/output-json.h index edfae89201..d6b16fd641 100644 --- a/src/output-json.h +++ b/src/output-json.h @@ -31,6 +31,13 @@ void TmModuleOutputJsonRegister (void); #ifdef HAVE_LIBJANSSON +/* helper struct for OutputJSONMemBufferCallback */ +typedef struct OutputJSONMemBufferWrapper_ { + MemBuffer **buffer; /**< buffer to use & expand as needed */ + size_t expand_by; /**< expand by this size */ +} OutputJSONMemBufferWrapper; + +int OutputJSONMemBufferCallback(const char *str, size_t size, void *data); void CreateJSONFlowId(json_t *js, const Flow *f); void JsonTcpFlags(uint8_t flags, json_t *js);