return NULL;
}
-static int JsonDNP3Logger(ThreadVars *tv, void *thread_data, const Packet *p,
- Flow *f, void *state, void *vtx, uint64_t tx_id)
+static int JsonDNP3LoggerToServer(ThreadVars *tv, void *thread_data,
+ const Packet *p, Flow *f, void *state, void *vtx, uint64_t tx_id)
{
SCEnter();
LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data;
json_decref(js);
}
+ SCReturnInt(TM_ECODE_OK);
+}
+
+static int JsonDNP3LoggerToClient(ThreadVars *tv, void *thread_data,
+ const Packet *p, Flow *f, void *state, void *vtx, uint64_t tx_id)
+{
+ SCEnter();
+ LogDNP3LogThread *thread = (LogDNP3LogThread *)thread_data;
+ DNP3Transaction *tx = vtx;
+
+ MemBuffer *buffer = (MemBuffer *)thread->buffer;
+
MemBufferReset(buffer);
if (tx->has_response && tx->response_done) {
json_t *js = CreateJSONHeader((Packet *)p, 1, "dnp3");
void JsonDNP3LogRegister(void)
{
- /* Register as en eve sub-module. */
- OutputRegisterTxSubModule(LOGGER_JSON_DNP3, "eve-log", "JsonDNP3Log",
- "eve-log.dnp3", OutputDNP3LogInitSub, ALPROTO_DNP3, JsonDNP3Logger,
- JsonDNP3LogThreadInit, JsonDNP3LogThreadDeinit, NULL);
+ /* Register direction aware eve sub-modules. */
+ OutputRegisterTxSubModuleWithProgress(LOGGER_JSON_DNP3, "eve-log",
+ "JsonDNP3Log", "eve-log.dnp3", OutputDNP3LogInitSub, ALPROTO_DNP3,
+ JsonDNP3LoggerToServer, 0, 1, JsonDNP3LogThreadInit,
+ JsonDNP3LogThreadDeinit, NULL);
+ OutputRegisterTxSubModuleWithProgress(LOGGER_JSON_DNP3, "eve-log",
+ "JsonDNP3Log", "eve-log.dnp3", OutputDNP3LogInitSub, ALPROTO_DNP3,
+ JsonDNP3LoggerToClient, 1, 1, JsonDNP3LogThreadInit,
+ JsonDNP3LogThreadDeinit, NULL);
}
#else
void JsonDNP3LogRegister (void)
{
- SCLogInfo("Can't init JSON output - JSON support was disabled during build.");
}
#endif