From 06f58650d6d363bcba5a7a42a6f771877b5ef42f Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Thu, 15 Apr 2021 14:59:28 -0600 Subject: [PATCH] eve: refactor OutputJsonBuilderBuffer to take context All callers of OutputJsonBuilderBuffer are now calling it using fields from an OutputJsonThreadCtx, so just pass a pointer to the thread context now. --- src/output-json-alert.c | 6 +++--- src/output-json-anomaly.c | 4 ++-- src/output-json-dcerpc.c | 2 +- src/output-json-dhcp.c | 2 +- src/output-json-dnp3.c | 10 ++-------- src/output-json-dns.c | 8 ++++---- src/output-json-drop.c | 2 +- src/output-json-file.c | 2 +- src/output-json-flow.c | 2 +- src/output-json-ftp.c | 3 +-- src/output-json-http.c | 2 +- src/output-json-http2.c | 2 +- src/output-json-ike.c | 2 +- src/output-json-krb5.c | 3 +-- src/output-json-metadata.c | 2 +- src/output-json-mqtt.c | 2 +- src/output-json-netflow.c | 8 ++------ src/output-json-nfs.c | 2 +- src/output-json-rdp.c | 3 +-- src/output-json-rfb.c | 3 +-- src/output-json-sip.c | 3 +-- src/output-json-smb.c | 4 +--- src/output-json-smtp.c | 2 +- src/output-json-snmp.c | 3 +-- src/output-json-ssh.c | 5 +---- src/output-json-template-rust.c | 2 +- src/output-json-template.c | 2 +- src/output-json-tftp.c | 3 +-- src/output-json-tls.c | 2 +- src/output-json.c | 4 +++- src/output-json.h | 2 +- 31 files changed, 41 insertions(+), 61 deletions(-) diff --git a/src/output-json-alert.c b/src/output-json-alert.c index f3ef0b5f59..81d71631d3 100644 --- a/src/output-json-alert.c +++ b/src/output-json-alert.c @@ -712,7 +712,7 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p) jb_set_string(jb, "xff", xff_buffer); } - OutputJsonBuilderBuffer(jb, aft->ctx->file_ctx, &aft->ctx->buffer); + OutputJsonBuilderBuffer(jb, aft->ctx); jb_free(jb); } @@ -722,7 +722,7 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p) CreateEveHeader(p, LOG_DIR_PACKET, "packet", NULL, json_output_ctx->eve_ctx); if (unlikely(packetjs != NULL)) { EvePacket(p, packetjs, 0); - OutputJsonBuilderBuffer(packetjs, aft->ctx->file_ctx, &aft->ctx->buffer); + OutputJsonBuilderBuffer(packetjs, aft->ctx); jb_free(packetjs); } } @@ -756,7 +756,7 @@ static int AlertJsonDecoderEvent(ThreadVars *tv, JsonAlertLogThread *aft, const AlertJsonHeader(json_output_ctx, p, pa, jb, json_output_ctx->flags, NULL); - OutputJsonBuilderBuffer(jb, aft->ctx->file_ctx, &aft->ctx->buffer); + OutputJsonBuilderBuffer(jb, aft->ctx); jb_free(jb); } diff --git a/src/output-json-anomaly.c b/src/output-json-anomaly.c index 69c3a8ca23..172e2eb80e 100644 --- a/src/output-json-anomaly.c +++ b/src/output-json-anomaly.c @@ -145,7 +145,7 @@ static int AnomalyDecodeEventJson(ThreadVars *tv, JsonAnomalyLogThread *aft, EvePacket(p, js, GET_PKT_LEN(p) < 32 ? GET_PKT_LEN(p) : 32); } - OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); + OutputJsonBuilderBuffer(js, aft->ctx); jb_free(js); } @@ -203,7 +203,7 @@ static int AnomalyAppLayerDecoderEventJson(JsonAnomalyLogThread *aft, /* anomaly */ jb_close(js); - OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); + OutputJsonBuilderBuffer(js, aft->ctx); jb_free(js); /* Current implementation assumes a single owner for this value */ diff --git a/src/output-json-dcerpc.c b/src/output-json-dcerpc.c index 67bf7c93fc..6b27d7dbbd 100644 --- a/src/output-json-dcerpc.c +++ b/src/output-json-dcerpc.c @@ -64,7 +64,7 @@ static int JsonDCERPCLogger(ThreadVars *tv, void *thread_data, jb_close(jb); MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(jb, thread); jb_free(jb); return TM_ECODE_OK; diff --git a/src/output-json-dhcp.c b/src/output-json-dhcp.c index ff435c4e35..35846f4e3e 100644 --- a/src/output-json-dhcp.c +++ b/src/output-json-dhcp.c @@ -73,7 +73,7 @@ static int JsonDHCPLogger(ThreadVars *tv, void *thread_data, rs_dhcp_logger_log(ctx->rs_logger, tx, js); - OutputJsonBuilderBuffer(js, thread->thread->file_ctx, &thread->thread->buffer); + OutputJsonBuilderBuffer(js, thread->thread); jb_free(js); return TM_ECODE_OK; diff --git a/src/output-json-dnp3.c b/src/output-json-dnp3.c index 0bc7cae66d..aead12cfd3 100644 --- a/src/output-json-dnp3.c +++ b/src/output-json-dnp3.c @@ -216,9 +216,6 @@ static int JsonDNP3LoggerToServer(ThreadVars *tv, void *thread_data, LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data; DNP3Transaction *tx = vtx; - MemBuffer *buffer = (MemBuffer *)thread->ctx->buffer; - - MemBufferReset(buffer); if (tx->has_request && tx->request_done) { JsonBuilder *js = CreateEveHeader(p, LOG_DIR_FLOW, "dnp3", NULL, thread->dnp3log_ctx->eve_ctx); @@ -229,7 +226,7 @@ static int JsonDNP3LoggerToServer(ThreadVars *tv, void *thread_data, jb_open_object(js, "dnp3"); JsonDNP3LogRequest(js, tx); jb_close(js); - OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &buffer); + OutputJsonBuilderBuffer(js, thread->ctx); jb_free(js); } @@ -243,9 +240,6 @@ static int JsonDNP3LoggerToClient(ThreadVars *tv, void *thread_data, LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data; DNP3Transaction *tx = vtx; - MemBuffer *buffer = (MemBuffer *)thread->ctx->buffer; - - MemBufferReset(buffer); if (tx->has_response && tx->response_done) { JsonBuilder *js = CreateEveHeader(p, LOG_DIR_FLOW, "dnp3", NULL, thread->dnp3log_ctx->eve_ctx); @@ -256,7 +250,7 @@ static int JsonDNP3LoggerToClient(ThreadVars *tv, void *thread_data, jb_open_object(js, "dnp3"); JsonDNP3LogResponse(js, tx); jb_close(js); - OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &buffer); + OutputJsonBuilderBuffer(js, thread->ctx); jb_free(js); } diff --git a/src/output-json-dns.c b/src/output-json-dns.c index 940a1f9c17..ce74856cfb 100644 --- a/src/output-json-dns.c +++ b/src/output-json-dns.c @@ -328,7 +328,7 @@ static int JsonDnsLoggerToServer(ThreadVars *tv, void *thread_data, } jb_close(jb); - OutputJsonBuilderBuffer(jb, td->ctx->file_ctx, &td->ctx->buffer); + OutputJsonBuilderBuffer(jb, td->ctx); jb_free(jb); } @@ -357,7 +357,7 @@ static int JsonDnsLoggerToClient(ThreadVars *tv, void *thread_data, jb_open_object(jb, "dns"); rs_dns_log_json_answer(txptr, td->dnslog_ctx->flags, jb); jb_close(jb); - OutputJsonBuilderBuffer(jb, td->ctx->file_ctx, &td->ctx->buffer); + OutputJsonBuilderBuffer(jb, td->ctx); jb_free(jb); } } else { @@ -377,7 +377,7 @@ static int JsonDnsLoggerToClient(ThreadVars *tv, void *thread_data, jb_set_object(jb, "dns", answer); jb_free(answer); - OutputJsonBuilderBuffer(jb, td->ctx->file_ctx, &td->ctx->buffer); + OutputJsonBuilderBuffer(jb, td->ctx); jb_free(jb); } /* Log authorities. */ @@ -396,7 +396,7 @@ static int JsonDnsLoggerToClient(ThreadVars *tv, void *thread_data, jb_set_object(jb, "dns", answer); jb_free(answer); - OutputJsonBuilderBuffer(jb, td->ctx->file_ctx, &td->ctx->buffer); + OutputJsonBuilderBuffer(jb, td->ctx); jb_free(jb); } } diff --git a/src/output-json-drop.c b/src/output-json-drop.c index 4afc9dd859..e13da04236 100644 --- a/src/output-json-drop.c +++ b/src/output-json-drop.c @@ -168,7 +168,7 @@ static int DropLogJSON (JsonDropLogThread *aft, const Packet *p) } } - OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); + OutputJsonBuilderBuffer(js, aft->ctx); jb_free(js); return TM_ECODE_OK; diff --git a/src/output-json-file.c b/src/output-json-file.c index 466cc78f32..dabcaab58d 100644 --- a/src/output-json-file.c +++ b/src/output-json-file.c @@ -212,7 +212,7 @@ static void FileWriteJsonRecord(JsonFileLogThread *aft, const Packet *p, const F return; } - OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); + OutputJsonBuilderBuffer(js, aft->ctx); jb_free(js); } diff --git a/src/output-json-flow.c b/src/output-json-flow.c index 69eccf3ab2..4025480fff 100644 --- a/src/output-json-flow.c +++ b/src/output-json-flow.c @@ -325,7 +325,7 @@ static int JsonFlowLogger(ThreadVars *tv, void *thread_data, Flow *f) EveFlowLogJSON(thread, jb, f); - OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(jb, thread); jb_free(jb); SCReturnInt(TM_ECODE_OK); diff --git a/src/output-json-ftp.c b/src/output-json-ftp.c index bef33a1d0d..3c27d95c8d 100644 --- a/src/output-json-ftp.c +++ b/src/output-json-ftp.c @@ -163,8 +163,7 @@ static int JsonFTPLogger(ThreadVars *tv, void *thread_data, goto fail; } - MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(jb, thread); jb_free(jb); } diff --git a/src/output-json-http.c b/src/output-json-http.c index 8ae9e6a762..bc38254d3b 100644 --- a/src/output-json-http.c +++ b/src/output-json-http.c @@ -512,7 +512,7 @@ static int JsonHttpLogger(ThreadVars *tv, void *thread_data, const Packet *p, Fl } } - OutputJsonBuilderBuffer(js, jhl->ctx->file_ctx, &jhl->ctx->buffer); + OutputJsonBuilderBuffer(js, jhl->ctx); jb_free(js); SCReturnInt(TM_ECODE_OK); diff --git a/src/output-json-http2.c b/src/output-json-http2.c index 066bd0461e..7e57c71936 100644 --- a/src/output-json-http2.c +++ b/src/output-json-http2.c @@ -95,7 +95,7 @@ static int JsonHttp2Logger(ThreadVars *tv, void *thread_data, const Packet *p, goto end; } jb_close(js); - OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); + OutputJsonBuilderBuffer(js, aft->ctx); end: jb_free(js); return 0; diff --git a/src/output-json-ike.c b/src/output-json-ike.c index 5052debfdd..5093e55db3 100644 --- a/src/output-json-ike.c +++ b/src/output-json-ike.c @@ -91,7 +91,7 @@ static int JsonIKELogger(ThreadVars *tv, void *thread_data, const Packet *p, Flo goto error; } - OutputJsonBuilderBuffer(jb, thread->ctx->file_ctx, &thread->ctx->buffer); + OutputJsonBuilderBuffer(jb, thread->ctx); jb_free(jb); return TM_ECODE_OK; diff --git a/src/output-json-krb5.c b/src/output-json-krb5.c index 6fb6ed1c2b..f3200cbe44 100644 --- a/src/output-json-krb5.c +++ b/src/output-json-krb5.c @@ -66,8 +66,7 @@ static int JsonKRB5Logger(ThreadVars *tv, void *thread_data, } jb_close(jb); - MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(jb, thread); jb_free(jb); return TM_ECODE_OK; diff --git a/src/output-json-metadata.c b/src/output-json-metadata.c index d1ae81cdfc..a2a8a5f85a 100644 --- a/src/output-json-metadata.c +++ b/src/output-json-metadata.c @@ -76,7 +76,7 @@ static int MetadataJson(ThreadVars *tv, OutputJsonThreadCtx *aft, const Packet * if (!aft->ctx->cfg.include_metadata) { EveAddMetadata(p, p->flow, js); } - OutputJsonBuilderBuffer(js, aft->file_ctx, &aft->buffer); + OutputJsonBuilderBuffer(js, aft); jb_free(js); return TM_ECODE_OK; diff --git a/src/output-json-mqtt.c b/src/output-json-mqtt.c index 4c54231bcf..76f4e9f47b 100644 --- a/src/output-json-mqtt.c +++ b/src/output-json-mqtt.c @@ -93,7 +93,7 @@ static int JsonMQTTLogger(ThreadVars *tv, void *thread_data, if (!rs_mqtt_logger_log(state, tx, thread->mqttlog_ctx->flags, js)) goto error; - OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &thread->ctx->buffer); + OutputJsonBuilderBuffer(js, thread->ctx); jb_free(js); return TM_ECODE_OK; diff --git a/src/output-json-netflow.c b/src/output-json-netflow.c index a5676ca98a..16267a9f3b 100644 --- a/src/output-json-netflow.c +++ b/src/output-json-netflow.c @@ -270,26 +270,22 @@ static int JsonNetFlowLogger(ThreadVars *tv, void *thread_data, Flow *f) SCEnter(); OutputJsonThreadCtx *jhl = thread_data; - /* reset */ - MemBufferReset(jhl->buffer); JsonBuilder *jb = CreateEveHeaderFromNetFlow(f, 0); if (unlikely(jb == NULL)) return TM_ECODE_OK; NetFlowLogEveToServer(jb, f); EveAddCommonOptions(&jhl->ctx->cfg, NULL, f, jb); - OutputJsonBuilderBuffer(jb, jhl->file_ctx, &jhl->buffer); + OutputJsonBuilderBuffer(jb, jhl); jb_free(jb); /* only log a response record if we actually have seen response packets */ if (f->tosrcpktcnt) { - /* reset */ - MemBufferReset(jhl->buffer); jb = CreateEveHeaderFromNetFlow(f, 1); if (unlikely(jb == NULL)) return TM_ECODE_OK; NetFlowLogEveToClient(jb, f); EveAddCommonOptions(&jhl->ctx->cfg, NULL, f, jb); - OutputJsonBuilderBuffer(jb, jhl->file_ctx, &jhl->buffer); + OutputJsonBuilderBuffer(jb, jhl); jb_free(jb); } SCReturnInt(TM_ECODE_OK); diff --git a/src/output-json-nfs.c b/src/output-json-nfs.c index d45eb3f2ea..088c99b6f8 100644 --- a/src/output-json-nfs.c +++ b/src/output-json-nfs.c @@ -95,7 +95,7 @@ static int JsonNFSLogger(ThreadVars *tv, void *thread_data, jb_close(jb); MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(jb, thread); jb_free(jb); return TM_ECODE_OK; } diff --git a/src/output-json-rdp.c b/src/output-json-rdp.c index 7ae854e446..69c0b460f5 100644 --- a/src/output-json-rdp.c +++ b/src/output-json-rdp.c @@ -56,8 +56,7 @@ static int JsonRdpLogger(ThreadVars *tv, void *thread_data, jb_free(js); return TM_ECODE_FAILED; } - MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(js, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(js, thread); jb_free(js); return TM_ECODE_OK; diff --git a/src/output-json-rfb.c b/src/output-json-rfb.c index f42e0bebf7..e3d87841e8 100644 --- a/src/output-json-rfb.c +++ b/src/output-json-rfb.c @@ -73,8 +73,7 @@ static int JsonRFBLogger(ThreadVars *tv, void *thread_data, goto error; } - MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(js, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(js, thread); jb_free(js); return TM_ECODE_OK; diff --git a/src/output-json-sip.c b/src/output-json-sip.c index 3297f78728..fa0f0a12ee 100644 --- a/src/output-json-sip.c +++ b/src/output-json-sip.c @@ -75,8 +75,7 @@ static int JsonSIPLogger(ThreadVars *tv, void *thread_data, goto error; } - MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(js, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(js, thread); jb_free(js); return TM_ECODE_OK; diff --git a/src/output-json-smb.c b/src/output-json-smb.c index 7d54f57f70..780f903cc4 100644 --- a/src/output-json-smb.c +++ b/src/output-json-smb.c @@ -75,9 +75,7 @@ static int JsonSMBLogger(ThreadVars *tv, void *thread_data, } jb_close(jb); - EveAddCommonOptions(&thread->ctx->cfg, p, f, jb); - MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(jb, thread); jb_free(jb); return TM_ECODE_OK; diff --git a/src/output-json-smtp.c b/src/output-json-smtp.c index a02dd1f816..59043518bd 100644 --- a/src/output-json-smtp.c +++ b/src/output-json-smtp.c @@ -86,7 +86,7 @@ static int JsonSmtpLogger(ThreadVars *tv, void *thread_data, const Packet *p, Fl jb_close(jb); if (EveEmailLogJson(jhl, jb, p, f, state, tx, tx_id) == TM_ECODE_OK) { - OutputJsonBuilderBuffer(jb, jhl->ctx->file_ctx, &jhl->ctx->buffer); + OutputJsonBuilderBuffer(jb, jhl->ctx); } jb_free(jb); diff --git a/src/output-json-snmp.c b/src/output-json-snmp.c index fb194f6615..6c86fcbe07 100644 --- a/src/output-json-snmp.c +++ b/src/output-json-snmp.c @@ -66,8 +66,7 @@ static int JsonSNMPLogger(ThreadVars *tv, void *thread_data, } jb_close(jb); - MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(jb, thread); jb_free(jb); return TM_ECODE_OK; diff --git a/src/output-json-ssh.c b/src/output-json-ssh.c index f9f10ab977..ec649abf4f 100644 --- a/src/output-json-ssh.c +++ b/src/output-json-ssh.c @@ -66,15 +66,12 @@ static int JsonSshLogger(ThreadVars *tv, void *thread_data, const Packet *p, if (unlikely(js == NULL)) return 0; - /* reset */ - MemBufferReset(thread->buffer); - jb_open_object(js, "ssh"); if (!rs_ssh_log_json(txptr, js)) { goto end; } jb_close(js); - OutputJsonBuilderBuffer(js, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(js, thread); end: jb_free(js); diff --git a/src/output-json-template-rust.c b/src/output-json-template-rust.c index 4ef3aef9f8..33280f740c 100644 --- a/src/output-json-template-rust.c +++ b/src/output-json-template-rust.c @@ -82,7 +82,7 @@ static int JsonTemplateLogger(ThreadVars *tv, void *thread_data, } jb_close(js); - OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &thread->ctx->buffer); + OutputJsonBuilderBuffer(js, thread->ctx); jb_free(js); return TM_ECODE_OK; diff --git a/src/output-json-template.c b/src/output-json-template.c index 584d1e88a5..2e9907808c 100644 --- a/src/output-json-template.c +++ b/src/output-json-template.c @@ -94,7 +94,7 @@ static int JsonTemplateLogger(ThreadVars *tv, void *thread_data, /* Close template. */ jb_close(js); - OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &thread->ctx->buffer); + OutputJsonBuilderBuffer(js, thread->ctx); jb_free(js); return TM_ECODE_OK; diff --git a/src/output-json-tftp.c b/src/output-json-tftp.c index a5edfe48f8..ceaebde958 100644 --- a/src/output-json-tftp.c +++ b/src/output-json-tftp.c @@ -66,8 +66,7 @@ static int JsonTFTPLogger(ThreadVars *tv, void *thread_data, } jb_close(jb); - MemBufferReset(thread->buffer); - OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); + OutputJsonBuilderBuffer(jb, thread); jb_free(jb); return TM_ECODE_OK; diff --git a/src/output-json-tls.c b/src/output-json-tls.c index 5a1fe36b4a..c5078e4530 100644 --- a/src/output-json-tls.c +++ b/src/output-json-tls.c @@ -442,7 +442,7 @@ static int JsonTlsLogger(ThreadVars *tv, void *thread_data, const Packet *p, /* Close the tls object. */ jb_close(js); - OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); + OutputJsonBuilderBuffer(js, aft->ctx); jb_free(js); return 0; diff --git a/src/output-json.c b/src/output-json.c index 2005031c62..e356b6851e 100644 --- a/src/output-json.c +++ b/src/output-json.c @@ -971,8 +971,10 @@ int OutputJSONBuffer(json_t *js, LogFileCtx *file_ctx, MemBuffer **buffer) return 0; } -int OutputJsonBuilderBuffer(JsonBuilder *js, LogFileCtx *file_ctx, MemBuffer **buffer) +int OutputJsonBuilderBuffer(JsonBuilder *js, OutputJsonThreadCtx *ctx) { + LogFileCtx *file_ctx = ctx->file_ctx; + MemBuffer **buffer = &ctx->buffer; if (file_ctx->sensor_name) { jb_set_string(js, "host", file_ctx->sensor_name); } diff --git a/src/output-json.h b/src/output-json.h index 0ecd5e7b8d..c621f36692 100644 --- a/src/output-json.h +++ b/src/output-json.h @@ -103,7 +103,7 @@ JsonBuilder *CreateEveHeader(const Packet *p, enum OutputJsonLogDirection dir, JsonBuilder *CreateEveHeaderWithTxId(const Packet *p, enum OutputJsonLogDirection dir, const char *event_type, JsonAddrInfo *addr, uint64_t tx_id, OutputJsonCtx *eve_ctx); int OutputJSONBuffer(json_t *js, LogFileCtx *file_ctx, MemBuffer **buffer); -int OutputJsonBuilderBuffer(JsonBuilder *js, LogFileCtx *file_ctx, MemBuffer **buffer); +int OutputJsonBuilderBuffer(JsonBuilder *js, OutputJsonThreadCtx *ctx); OutputInitResult OutputJsonInitCtx(ConfNode *); OutputInitResult OutputJsonLogInitSub(ConfNode *conf, OutputCtx *parent_ctx); -- 2.47.2