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.
pull/6060/head
Jason Ish 5 years ago
parent 08eee26d27
commit 06f58650d6

@ -712,7 +712,7 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p)
jb_set_string(jb, "xff", xff_buffer); jb_set_string(jb, "xff", xff_buffer);
} }
OutputJsonBuilderBuffer(jb, aft->ctx->file_ctx, &aft->ctx->buffer); OutputJsonBuilderBuffer(jb, aft->ctx);
jb_free(jb); 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); CreateEveHeader(p, LOG_DIR_PACKET, "packet", NULL, json_output_ctx->eve_ctx);
if (unlikely(packetjs != NULL)) { if (unlikely(packetjs != NULL)) {
EvePacket(p, packetjs, 0); EvePacket(p, packetjs, 0);
OutputJsonBuilderBuffer(packetjs, aft->ctx->file_ctx, &aft->ctx->buffer); OutputJsonBuilderBuffer(packetjs, aft->ctx);
jb_free(packetjs); 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); 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); jb_free(jb);
} }

@ -145,7 +145,7 @@ static int AnomalyDecodeEventJson(ThreadVars *tv, JsonAnomalyLogThread *aft,
EvePacket(p, js, GET_PKT_LEN(p) < 32 ? GET_PKT_LEN(p) : 32); 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); jb_free(js);
} }
@ -203,7 +203,7 @@ static int AnomalyAppLayerDecoderEventJson(JsonAnomalyLogThread *aft,
/* anomaly */ /* anomaly */
jb_close(js); jb_close(js);
OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); OutputJsonBuilderBuffer(js, aft->ctx);
jb_free(js); jb_free(js);
/* Current implementation assumes a single owner for this value */ /* Current implementation assumes a single owner for this value */

@ -64,7 +64,7 @@ static int JsonDCERPCLogger(ThreadVars *tv, void *thread_data,
jb_close(jb); jb_close(jb);
MemBufferReset(thread->buffer); MemBufferReset(thread->buffer);
OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); OutputJsonBuilderBuffer(jb, thread);
jb_free(jb); jb_free(jb);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -73,7 +73,7 @@ static int JsonDHCPLogger(ThreadVars *tv, void *thread_data,
rs_dhcp_logger_log(ctx->rs_logger, tx, js); 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); jb_free(js);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -216,9 +216,6 @@ static int JsonDNP3LoggerToServer(ThreadVars *tv, void *thread_data,
LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data; LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data;
DNP3Transaction *tx = vtx; DNP3Transaction *tx = vtx;
MemBuffer *buffer = (MemBuffer *)thread->ctx->buffer;
MemBufferReset(buffer);
if (tx->has_request && tx->request_done) { if (tx->has_request && tx->request_done) {
JsonBuilder *js = JsonBuilder *js =
CreateEveHeader(p, LOG_DIR_FLOW, "dnp3", NULL, thread->dnp3log_ctx->eve_ctx); 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"); jb_open_object(js, "dnp3");
JsonDNP3LogRequest(js, tx); JsonDNP3LogRequest(js, tx);
jb_close(js); jb_close(js);
OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &buffer); OutputJsonBuilderBuffer(js, thread->ctx);
jb_free(js); jb_free(js);
} }
@ -243,9 +240,6 @@ static int JsonDNP3LoggerToClient(ThreadVars *tv, void *thread_data,
LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data; LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data;
DNP3Transaction *tx = vtx; DNP3Transaction *tx = vtx;
MemBuffer *buffer = (MemBuffer *)thread->ctx->buffer;
MemBufferReset(buffer);
if (tx->has_response && tx->response_done) { if (tx->has_response && tx->response_done) {
JsonBuilder *js = JsonBuilder *js =
CreateEveHeader(p, LOG_DIR_FLOW, "dnp3", NULL, thread->dnp3log_ctx->eve_ctx); 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"); jb_open_object(js, "dnp3");
JsonDNP3LogResponse(js, tx); JsonDNP3LogResponse(js, tx);
jb_close(js); jb_close(js);
OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &buffer); OutputJsonBuilderBuffer(js, thread->ctx);
jb_free(js); jb_free(js);
} }

@ -328,7 +328,7 @@ static int JsonDnsLoggerToServer(ThreadVars *tv, void *thread_data,
} }
jb_close(jb); jb_close(jb);
OutputJsonBuilderBuffer(jb, td->ctx->file_ctx, &td->ctx->buffer); OutputJsonBuilderBuffer(jb, td->ctx);
jb_free(jb); jb_free(jb);
} }
@ -357,7 +357,7 @@ static int JsonDnsLoggerToClient(ThreadVars *tv, void *thread_data,
jb_open_object(jb, "dns"); jb_open_object(jb, "dns");
rs_dns_log_json_answer(txptr, td->dnslog_ctx->flags, jb); rs_dns_log_json_answer(txptr, td->dnslog_ctx->flags, jb);
jb_close(jb); jb_close(jb);
OutputJsonBuilderBuffer(jb, td->ctx->file_ctx, &td->ctx->buffer); OutputJsonBuilderBuffer(jb, td->ctx);
jb_free(jb); jb_free(jb);
} }
} else { } else {
@ -377,7 +377,7 @@ static int JsonDnsLoggerToClient(ThreadVars *tv, void *thread_data,
jb_set_object(jb, "dns", answer); jb_set_object(jb, "dns", answer);
jb_free(answer); jb_free(answer);
OutputJsonBuilderBuffer(jb, td->ctx->file_ctx, &td->ctx->buffer); OutputJsonBuilderBuffer(jb, td->ctx);
jb_free(jb); jb_free(jb);
} }
/* Log authorities. */ /* Log authorities. */
@ -396,7 +396,7 @@ static int JsonDnsLoggerToClient(ThreadVars *tv, void *thread_data,
jb_set_object(jb, "dns", answer); jb_set_object(jb, "dns", answer);
jb_free(answer); jb_free(answer);
OutputJsonBuilderBuffer(jb, td->ctx->file_ctx, &td->ctx->buffer); OutputJsonBuilderBuffer(jb, td->ctx);
jb_free(jb); jb_free(jb);
} }
} }

@ -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); jb_free(js);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -212,7 +212,7 @@ static void FileWriteJsonRecord(JsonFileLogThread *aft, const Packet *p, const F
return; return;
} }
OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); OutputJsonBuilderBuffer(js, aft->ctx);
jb_free(js); jb_free(js);
} }

@ -325,7 +325,7 @@ static int JsonFlowLogger(ThreadVars *tv, void *thread_data, Flow *f)
EveFlowLogJSON(thread, jb, f); EveFlowLogJSON(thread, jb, f);
OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); OutputJsonBuilderBuffer(jb, thread);
jb_free(jb); jb_free(jb);
SCReturnInt(TM_ECODE_OK); SCReturnInt(TM_ECODE_OK);

@ -163,8 +163,7 @@ static int JsonFTPLogger(ThreadVars *tv, void *thread_data,
goto fail; goto fail;
} }
MemBufferReset(thread->buffer); OutputJsonBuilderBuffer(jb, thread);
OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer);
jb_free(jb); jb_free(jb);
} }

@ -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); jb_free(js);
SCReturnInt(TM_ECODE_OK); SCReturnInt(TM_ECODE_OK);

@ -95,7 +95,7 @@ static int JsonHttp2Logger(ThreadVars *tv, void *thread_data, const Packet *p,
goto end; goto end;
} }
jb_close(js); jb_close(js);
OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); OutputJsonBuilderBuffer(js, aft->ctx);
end: end:
jb_free(js); jb_free(js);
return 0; return 0;

@ -91,7 +91,7 @@ static int JsonIKELogger(ThreadVars *tv, void *thread_data, const Packet *p, Flo
goto error; goto error;
} }
OutputJsonBuilderBuffer(jb, thread->ctx->file_ctx, &thread->ctx->buffer); OutputJsonBuilderBuffer(jb, thread->ctx);
jb_free(jb); jb_free(jb);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -66,8 +66,7 @@ static int JsonKRB5Logger(ThreadVars *tv, void *thread_data,
} }
jb_close(jb); jb_close(jb);
MemBufferReset(thread->buffer); OutputJsonBuilderBuffer(jb, thread);
OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer);
jb_free(jb); jb_free(jb);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -76,7 +76,7 @@ static int MetadataJson(ThreadVars *tv, OutputJsonThreadCtx *aft, const Packet *
if (!aft->ctx->cfg.include_metadata) { if (!aft->ctx->cfg.include_metadata) {
EveAddMetadata(p, p->flow, js); EveAddMetadata(p, p->flow, js);
} }
OutputJsonBuilderBuffer(js, aft->file_ctx, &aft->buffer); OutputJsonBuilderBuffer(js, aft);
jb_free(js); jb_free(js);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -93,7 +93,7 @@ static int JsonMQTTLogger(ThreadVars *tv, void *thread_data,
if (!rs_mqtt_logger_log(state, tx, thread->mqttlog_ctx->flags, js)) if (!rs_mqtt_logger_log(state, tx, thread->mqttlog_ctx->flags, js))
goto error; goto error;
OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &thread->ctx->buffer); OutputJsonBuilderBuffer(js, thread->ctx);
jb_free(js); jb_free(js);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -270,26 +270,22 @@ static int JsonNetFlowLogger(ThreadVars *tv, void *thread_data, Flow *f)
SCEnter(); SCEnter();
OutputJsonThreadCtx *jhl = thread_data; OutputJsonThreadCtx *jhl = thread_data;
/* reset */
MemBufferReset(jhl->buffer);
JsonBuilder *jb = CreateEveHeaderFromNetFlow(f, 0); JsonBuilder *jb = CreateEveHeaderFromNetFlow(f, 0);
if (unlikely(jb == NULL)) if (unlikely(jb == NULL))
return TM_ECODE_OK; return TM_ECODE_OK;
NetFlowLogEveToServer(jb, f); NetFlowLogEveToServer(jb, f);
EveAddCommonOptions(&jhl->ctx->cfg, NULL, f, jb); EveAddCommonOptions(&jhl->ctx->cfg, NULL, f, jb);
OutputJsonBuilderBuffer(jb, jhl->file_ctx, &jhl->buffer); OutputJsonBuilderBuffer(jb, jhl);
jb_free(jb); jb_free(jb);
/* only log a response record if we actually have seen response packets */ /* only log a response record if we actually have seen response packets */
if (f->tosrcpktcnt) { if (f->tosrcpktcnt) {
/* reset */
MemBufferReset(jhl->buffer);
jb = CreateEveHeaderFromNetFlow(f, 1); jb = CreateEveHeaderFromNetFlow(f, 1);
if (unlikely(jb == NULL)) if (unlikely(jb == NULL))
return TM_ECODE_OK; return TM_ECODE_OK;
NetFlowLogEveToClient(jb, f); NetFlowLogEveToClient(jb, f);
EveAddCommonOptions(&jhl->ctx->cfg, NULL, f, jb); EveAddCommonOptions(&jhl->ctx->cfg, NULL, f, jb);
OutputJsonBuilderBuffer(jb, jhl->file_ctx, &jhl->buffer); OutputJsonBuilderBuffer(jb, jhl);
jb_free(jb); jb_free(jb);
} }
SCReturnInt(TM_ECODE_OK); SCReturnInt(TM_ECODE_OK);

@ -95,7 +95,7 @@ static int JsonNFSLogger(ThreadVars *tv, void *thread_data,
jb_close(jb); jb_close(jb);
MemBufferReset(thread->buffer); MemBufferReset(thread->buffer);
OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer); OutputJsonBuilderBuffer(jb, thread);
jb_free(jb); jb_free(jb);
return TM_ECODE_OK; return TM_ECODE_OK;
} }

@ -56,8 +56,7 @@ static int JsonRdpLogger(ThreadVars *tv, void *thread_data,
jb_free(js); jb_free(js);
return TM_ECODE_FAILED; return TM_ECODE_FAILED;
} }
MemBufferReset(thread->buffer); OutputJsonBuilderBuffer(js, thread);
OutputJsonBuilderBuffer(js, thread->file_ctx, &thread->buffer);
jb_free(js); jb_free(js);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -73,8 +73,7 @@ static int JsonRFBLogger(ThreadVars *tv, void *thread_data,
goto error; goto error;
} }
MemBufferReset(thread->buffer); OutputJsonBuilderBuffer(js, thread);
OutputJsonBuilderBuffer(js, thread->file_ctx, &thread->buffer);
jb_free(js); jb_free(js);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -75,8 +75,7 @@ static int JsonSIPLogger(ThreadVars *tv, void *thread_data,
goto error; goto error;
} }
MemBufferReset(thread->buffer); OutputJsonBuilderBuffer(js, thread);
OutputJsonBuilderBuffer(js, thread->file_ctx, &thread->buffer);
jb_free(js); jb_free(js);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -75,9 +75,7 @@ static int JsonSMBLogger(ThreadVars *tv, void *thread_data,
} }
jb_close(jb); jb_close(jb);
EveAddCommonOptions(&thread->ctx->cfg, p, f, jb); OutputJsonBuilderBuffer(jb, thread);
MemBufferReset(thread->buffer);
OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer);
jb_free(jb); jb_free(jb);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -86,7 +86,7 @@ static int JsonSmtpLogger(ThreadVars *tv, void *thread_data, const Packet *p, Fl
jb_close(jb); jb_close(jb);
if (EveEmailLogJson(jhl, jb, p, f, state, tx, tx_id) == TM_ECODE_OK) { 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); jb_free(jb);

@ -66,8 +66,7 @@ static int JsonSNMPLogger(ThreadVars *tv, void *thread_data,
} }
jb_close(jb); jb_close(jb);
MemBufferReset(thread->buffer); OutputJsonBuilderBuffer(jb, thread);
OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer);
jb_free(jb); jb_free(jb);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -66,15 +66,12 @@ static int JsonSshLogger(ThreadVars *tv, void *thread_data, const Packet *p,
if (unlikely(js == NULL)) if (unlikely(js == NULL))
return 0; return 0;
/* reset */
MemBufferReset(thread->buffer);
jb_open_object(js, "ssh"); jb_open_object(js, "ssh");
if (!rs_ssh_log_json(txptr, js)) { if (!rs_ssh_log_json(txptr, js)) {
goto end; goto end;
} }
jb_close(js); jb_close(js);
OutputJsonBuilderBuffer(js, thread->file_ctx, &thread->buffer); OutputJsonBuilderBuffer(js, thread);
end: end:
jb_free(js); jb_free(js);

@ -82,7 +82,7 @@ static int JsonTemplateLogger(ThreadVars *tv, void *thread_data,
} }
jb_close(js); jb_close(js);
OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &thread->ctx->buffer); OutputJsonBuilderBuffer(js, thread->ctx);
jb_free(js); jb_free(js);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -94,7 +94,7 @@ static int JsonTemplateLogger(ThreadVars *tv, void *thread_data,
/* Close template. */ /* Close template. */
jb_close(js); jb_close(js);
OutputJsonBuilderBuffer(js, thread->ctx->file_ctx, &thread->ctx->buffer); OutputJsonBuilderBuffer(js, thread->ctx);
jb_free(js); jb_free(js);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -66,8 +66,7 @@ static int JsonTFTPLogger(ThreadVars *tv, void *thread_data,
} }
jb_close(jb); jb_close(jb);
MemBufferReset(thread->buffer); OutputJsonBuilderBuffer(jb, thread);
OutputJsonBuilderBuffer(jb, thread->file_ctx, &thread->buffer);
jb_free(jb); jb_free(jb);
return TM_ECODE_OK; return TM_ECODE_OK;

@ -442,7 +442,7 @@ static int JsonTlsLogger(ThreadVars *tv, void *thread_data, const Packet *p,
/* Close the tls object. */ /* Close the tls object. */
jb_close(js); jb_close(js);
OutputJsonBuilderBuffer(js, aft->ctx->file_ctx, &aft->ctx->buffer); OutputJsonBuilderBuffer(js, aft->ctx);
jb_free(js); jb_free(js);
return 0; return 0;

@ -971,8 +971,10 @@ int OutputJSONBuffer(json_t *js, LogFileCtx *file_ctx, MemBuffer **buffer)
return 0; 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) { if (file_ctx->sensor_name) {
jb_set_string(js, "host", file_ctx->sensor_name); jb_set_string(js, "host", file_ctx->sensor_name);
} }

@ -103,7 +103,7 @@ JsonBuilder *CreateEveHeader(const Packet *p, enum OutputJsonLogDirection dir,
JsonBuilder *CreateEveHeaderWithTxId(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); const char *event_type, JsonAddrInfo *addr, uint64_t tx_id, OutputJsonCtx *eve_ctx);
int OutputJSONBuffer(json_t *js, LogFileCtx *file_ctx, MemBuffer **buffer); 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 OutputJsonInitCtx(ConfNode *);
OutputInitResult OutputJsonLogInitSub(ConfNode *conf, OutputCtx *parent_ctx); OutputInitResult OutputJsonLogInitSub(ConfNode *conf, OutputCtx *parent_ctx);

Loading…
Cancel
Save