|
|
|
@ -243,12 +243,10 @@ error:
|
|
|
|
|
*
|
|
|
|
|
* \retval Returns 0 on success, -1 on failure.
|
|
|
|
|
*/
|
|
|
|
|
static void OutputRegisterTxModuleWrapper(LoggerId id, const char *name,
|
|
|
|
|
const char *conf_name, OutputInitFunc InitFunc, AppProto alproto,
|
|
|
|
|
TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress,
|
|
|
|
|
TxLoggerCondition TxLogCondition, ThreadInitFunc ThreadInit,
|
|
|
|
|
ThreadDeinitFunc ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStatsFunc ThreadExitPrintStats)
|
|
|
|
|
static void OutputRegisterTxModuleWrapper(LoggerId id, const char *name, const char *conf_name,
|
|
|
|
|
OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc, int tc_log_progress,
|
|
|
|
|
int ts_log_progress, TxLoggerCondition TxLogCondition, ThreadInitFunc ThreadInit,
|
|
|
|
|
ThreadDeinitFunc ThreadDeinit)
|
|
|
|
|
{
|
|
|
|
|
if (unlikely(TxLogFunc == NULL)) {
|
|
|
|
|
goto error;
|
|
|
|
@ -270,7 +268,6 @@ static void OutputRegisterTxModuleWrapper(LoggerId id, const char *name,
|
|
|
|
|
module->ts_log_progress = ts_log_progress;
|
|
|
|
|
module->ThreadInit = ThreadInit;
|
|
|
|
|
module->ThreadDeinit = ThreadDeinit;
|
|
|
|
|
module->ThreadExitPrintStats = ThreadExitPrintStats;
|
|
|
|
|
TAILQ_INSERT_TAIL(&output_modules, module, entries);
|
|
|
|
|
|
|
|
|
|
SCLogDebug("Tx logger \"%s\" registered.", name);
|
|
|
|
@ -279,12 +276,10 @@ error:
|
|
|
|
|
FatalError("Fatal error encountered. Exiting...");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void OutputRegisterTxSubModuleWrapper(LoggerId id, const char *parent_name,
|
|
|
|
|
const char *name, const char *conf_name, OutputInitSubFunc InitFunc,
|
|
|
|
|
AppProto alproto, TxLogger TxLogFunc, int tc_log_progress,
|
|
|
|
|
int ts_log_progress, TxLoggerCondition TxLogCondition,
|
|
|
|
|
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStatsFunc ThreadExitPrintStats)
|
|
|
|
|
static void OutputRegisterTxSubModuleWrapper(LoggerId id, const char *parent_name, const char *name,
|
|
|
|
|
const char *conf_name, OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
|
|
|
|
|
int tc_log_progress, int ts_log_progress, TxLoggerCondition TxLogCondition,
|
|
|
|
|
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
|
|
|
|
|
{
|
|
|
|
|
if (unlikely(TxLogFunc == NULL)) {
|
|
|
|
|
goto error;
|
|
|
|
@ -307,7 +302,6 @@ static void OutputRegisterTxSubModuleWrapper(LoggerId id, const char *parent_nam
|
|
|
|
|
module->ts_log_progress = ts_log_progress;
|
|
|
|
|
module->ThreadInit = ThreadInit;
|
|
|
|
|
module->ThreadDeinit = ThreadDeinit;
|
|
|
|
|
module->ThreadExitPrintStats = ThreadExitPrintStats;
|
|
|
|
|
TAILQ_INSERT_TAIL(&output_modules, module, entries);
|
|
|
|
|
|
|
|
|
|
SCLogDebug("Tx logger for alproto %d \"%s\" registered.", alproto, name);
|
|
|
|
@ -324,27 +318,20 @@ error:
|
|
|
|
|
*
|
|
|
|
|
* \retval Returns 0 on success, -1 on failure.
|
|
|
|
|
*/
|
|
|
|
|
void OutputRegisterTxModuleWithCondition(LoggerId id, const char *name,
|
|
|
|
|
const char *conf_name, OutputInitFunc InitFunc, AppProto alproto,
|
|
|
|
|
TxLogger TxLogFunc, TxLoggerCondition TxLogCondition,
|
|
|
|
|
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStatsFunc ThreadExitPrintStats)
|
|
|
|
|
void OutputRegisterTxModuleWithCondition(LoggerId id, const char *name, const char *conf_name,
|
|
|
|
|
OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
|
|
|
|
|
TxLoggerCondition TxLogCondition, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
|
|
|
|
|
{
|
|
|
|
|
OutputRegisterTxModuleWrapper(id, name, conf_name, InitFunc, alproto,
|
|
|
|
|
TxLogFunc, -1, -1, TxLogCondition, ThreadInit, ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStats);
|
|
|
|
|
OutputRegisterTxModuleWrapper(id, name, conf_name, InitFunc, alproto, TxLogFunc, -1, -1,
|
|
|
|
|
TxLogCondition, ThreadInit, ThreadDeinit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OutputRegisterTxSubModuleWithCondition(LoggerId id,
|
|
|
|
|
const char *parent_name, const char *name, const char *conf_name,
|
|
|
|
|
OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
|
|
|
|
|
TxLoggerCondition TxLogCondition, ThreadInitFunc ThreadInit,
|
|
|
|
|
ThreadDeinitFunc ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStatsFunc ThreadExitPrintStats)
|
|
|
|
|
void OutputRegisterTxSubModuleWithCondition(LoggerId id, const char *parent_name, const char *name,
|
|
|
|
|
const char *conf_name, OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
|
|
|
|
|
TxLoggerCondition TxLogCondition, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
|
|
|
|
|
{
|
|
|
|
|
OutputRegisterTxSubModuleWrapper(id, parent_name, name, conf_name, InitFunc,
|
|
|
|
|
alproto, TxLogFunc, -1, -1, TxLogCondition, ThreadInit, ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStats);
|
|
|
|
|
OutputRegisterTxSubModuleWrapper(id, parent_name, name, conf_name, InitFunc, alproto, TxLogFunc,
|
|
|
|
|
-1, -1, TxLogCondition, ThreadInit, ThreadDeinit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -355,27 +342,21 @@ void OutputRegisterTxSubModuleWithCondition(LoggerId id,
|
|
|
|
|
*
|
|
|
|
|
* \retval Returns 0 on success, -1 on failure.
|
|
|
|
|
*/
|
|
|
|
|
void OutputRegisterTxModuleWithProgress(LoggerId id, const char *name,
|
|
|
|
|
const char *conf_name, OutputInitFunc InitFunc, AppProto alproto,
|
|
|
|
|
TxLogger TxLogFunc, int tc_log_progress, int ts_log_progress,
|
|
|
|
|
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStatsFunc ThreadExitPrintStats)
|
|
|
|
|
void OutputRegisterTxModuleWithProgress(LoggerId id, const char *name, const char *conf_name,
|
|
|
|
|
OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc, int tc_log_progress,
|
|
|
|
|
int ts_log_progress, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
|
|
|
|
|
{
|
|
|
|
|
OutputRegisterTxModuleWrapper(id, name, conf_name, InitFunc, alproto,
|
|
|
|
|
TxLogFunc, tc_log_progress, ts_log_progress, NULL, ThreadInit,
|
|
|
|
|
ThreadDeinit, ThreadExitPrintStats);
|
|
|
|
|
OutputRegisterTxModuleWrapper(id, name, conf_name, InitFunc, alproto, TxLogFunc,
|
|
|
|
|
tc_log_progress, ts_log_progress, NULL, ThreadInit, ThreadDeinit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OutputRegisterTxSubModuleWithProgress(LoggerId id, const char *parent_name,
|
|
|
|
|
const char *name, const char *conf_name, OutputInitSubFunc InitFunc,
|
|
|
|
|
AppProto alproto, TxLogger TxLogFunc, int tc_log_progress,
|
|
|
|
|
int ts_log_progress, ThreadInitFunc ThreadInit,
|
|
|
|
|
ThreadDeinitFunc ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStatsFunc ThreadExitPrintStats)
|
|
|
|
|
void OutputRegisterTxSubModuleWithProgress(LoggerId id, const char *parent_name, const char *name,
|
|
|
|
|
const char *conf_name, OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
|
|
|
|
|
int tc_log_progress, int ts_log_progress, ThreadInitFunc ThreadInit,
|
|
|
|
|
ThreadDeinitFunc ThreadDeinit)
|
|
|
|
|
{
|
|
|
|
|
OutputRegisterTxSubModuleWrapper(id, parent_name, name, conf_name, InitFunc,
|
|
|
|
|
alproto, TxLogFunc, tc_log_progress, ts_log_progress, NULL, ThreadInit,
|
|
|
|
|
ThreadDeinit, ThreadExitPrintStats);
|
|
|
|
|
OutputRegisterTxSubModuleWrapper(id, parent_name, name, conf_name, InitFunc, alproto, TxLogFunc,
|
|
|
|
|
tc_log_progress, ts_log_progress, NULL, ThreadInit, ThreadDeinit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -386,26 +367,20 @@ void OutputRegisterTxSubModuleWithProgress(LoggerId id, const char *parent_name,
|
|
|
|
|
*
|
|
|
|
|
* \retval Returns 0 on success, -1 on failure.
|
|
|
|
|
*/
|
|
|
|
|
void OutputRegisterTxModule(LoggerId id, const char *name,
|
|
|
|
|
const char *conf_name, OutputInitFunc InitFunc, AppProto alproto,
|
|
|
|
|
TxLogger TxLogFunc, ThreadInitFunc ThreadInit,
|
|
|
|
|
ThreadDeinitFunc ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStatsFunc ThreadExitPrintStats)
|
|
|
|
|
void OutputRegisterTxModule(LoggerId id, const char *name, const char *conf_name,
|
|
|
|
|
OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc, ThreadInitFunc ThreadInit,
|
|
|
|
|
ThreadDeinitFunc ThreadDeinit)
|
|
|
|
|
{
|
|
|
|
|
OutputRegisterTxModuleWrapper(id, name, conf_name, InitFunc, alproto,
|
|
|
|
|
TxLogFunc, -1, -1, NULL, ThreadInit, ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStats);
|
|
|
|
|
OutputRegisterTxModuleWrapper(id, name, conf_name, InitFunc, alproto, TxLogFunc, -1, -1, NULL,
|
|
|
|
|
ThreadInit, ThreadDeinit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void OutputRegisterTxSubModule(LoggerId id, const char *parent_name,
|
|
|
|
|
const char *name, const char *conf_name,
|
|
|
|
|
OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
|
|
|
|
|
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStatsFunc ThreadExitPrintStats)
|
|
|
|
|
void OutputRegisterTxSubModule(LoggerId id, const char *parent_name, const char *name,
|
|
|
|
|
const char *conf_name, OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
|
|
|
|
|
ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
|
|
|
|
|
{
|
|
|
|
|
OutputRegisterTxSubModuleWrapper(id, parent_name, name, conf_name,
|
|
|
|
|
InitFunc, alproto, TxLogFunc, -1, -1, NULL, ThreadInit, ThreadDeinit,
|
|
|
|
|
ThreadExitPrintStats);
|
|
|
|
|
OutputRegisterTxSubModuleWrapper(id, parent_name, name, conf_name, InitFunc, alproto, TxLogFunc,
|
|
|
|
|
-1, -1, NULL, ThreadInit, ThreadDeinit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -1033,7 +1008,7 @@ void OutputRegisterLoggers(void)
|
|
|
|
|
JsonHttpLogRegister();
|
|
|
|
|
OutputRegisterTxSubModuleWithProgress(LOGGER_JSON_TX, "eve-log", "LogHttp2Log", "eve-log.http2",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_HTTP2, JsonGenericDirFlowLogger, HTTP2StateClosed,
|
|
|
|
|
HTTP2StateClosed, JsonLogThreadInit, JsonLogThreadDeinit, NULL);
|
|
|
|
|
HTTP2StateClosed, JsonLogThreadInit, JsonLogThreadDeinit);
|
|
|
|
|
/* tls log */
|
|
|
|
|
LogTlsLogRegister();
|
|
|
|
|
JsonTlsLogRegister();
|
|
|
|
@ -1041,7 +1016,7 @@ void OutputRegisterLoggers(void)
|
|
|
|
|
/* ssh */
|
|
|
|
|
OutputRegisterTxSubModuleWithCondition(LOGGER_JSON_TX, "eve-log", "JsonSshLog", "eve-log.ssh",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_SSH, JsonGenericDirFlowLogger, SSHTxLogCondition,
|
|
|
|
|
JsonLogThreadInit, JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadInit, JsonLogThreadDeinit);
|
|
|
|
|
/* pcap log */
|
|
|
|
|
PcapLogRegister();
|
|
|
|
|
/* file log */
|
|
|
|
@ -1052,7 +1027,7 @@ void OutputRegisterLoggers(void)
|
|
|
|
|
/* modbus */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonModbusLog", "eve-log.modbus",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_MODBUS, JsonGenericDirFlowLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
|
|
|
|
|
SCLogDebug("modbus json logger registered.");
|
|
|
|
|
/* tcp streaming data */
|
|
|
|
@ -1077,16 +1052,16 @@ void OutputRegisterLoggers(void)
|
|
|
|
|
/* TFTP JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonTFTPLog", "eve-log.tftp",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_TFTP, JsonGenericDirPacketLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
|
|
|
|
|
SCLogDebug("TFTP JSON logger registered.");
|
|
|
|
|
/* FTP and FTP-DATA JSON loggers. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonFTPLog", "eve-log.ftp",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_FTP, JsonGenericDirFlowLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonFTPLog", "eve-log.ftp",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_FTPDATA, JsonGenericDirFlowLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
SCLogDebug("FTP JSON logger registered.");
|
|
|
|
|
|
|
|
|
|
/* SMB JSON logger. */
|
|
|
|
@ -1096,13 +1071,13 @@ void OutputRegisterLoggers(void)
|
|
|
|
|
/* KRB5 JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonKRB5Log", "eve-log.krb5",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_KRB5, JsonGenericDirPacketLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
|
|
|
|
|
SCLogDebug("KRB5 JSON logger registered.");
|
|
|
|
|
/* QUIC JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonQuicLog", "eve-log.quic",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_QUIC, JsonGenericDirPacketLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
|
|
|
|
|
SCLogDebug("quic json logger registered.");
|
|
|
|
|
/* DHCP JSON logger. */
|
|
|
|
@ -1110,19 +1085,19 @@ void OutputRegisterLoggers(void)
|
|
|
|
|
/* SNMP JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonSNMPLog", "eve-log.snmp",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_SNMP, JsonGenericDirPacketLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
|
|
|
|
|
SCLogDebug("SNMP JSON logger registered.");
|
|
|
|
|
/* SIP JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonSIPLog", "eve-log.sip",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_SIP, JsonGenericDirPacketLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
|
|
|
|
|
SCLogDebug("SIP JSON logger registered.");
|
|
|
|
|
/* RFB JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonRFBLog", "eve-log.rfb",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_RFB, JsonGenericDirPacketLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
/* MQTT JSON logger. */
|
|
|
|
|
JsonMQTTLogRegister();
|
|
|
|
|
/* Pgsql JSON logger. */
|
|
|
|
@ -1130,25 +1105,25 @@ void OutputRegisterLoggers(void)
|
|
|
|
|
/* WebSocket JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonWebSocketLog", "eve-log.websocket",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_WEBSOCKET, JsonGenericDirPacketLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
/* Enip JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonEnipLog", "eve-log.enip",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_ENIP, JsonGenericDirFlowLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
/* Ldap JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonLdapLog", "eve-log.ldap",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_LDAP, JsonGenericDirFlowLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
/* DoH2 JSON logger. */
|
|
|
|
|
JsonDoh2LogRegister();
|
|
|
|
|
/* Template JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonTemplateLog", "eve-log.template",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_TEMPLATE, JsonGenericDirPacketLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
/* RDP JSON logger. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonRdpLog", "eve-log.rdp",
|
|
|
|
|
OutputJsonLogInitSub, ALPROTO_RDP, JsonGenericDirPacketLogger, JsonLogThreadInit,
|
|
|
|
|
JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonLogThreadDeinit);
|
|
|
|
|
SCLogDebug("rdp json logger registered.");
|
|
|
|
|
/* DCERPC JSON logger. */
|
|
|
|
|
JsonDCERPCLogRegister();
|
|
|
|
@ -1159,7 +1134,7 @@ void OutputRegisterLoggers(void)
|
|
|
|
|
/* Register as an eve sub-module. */
|
|
|
|
|
OutputRegisterTxSubModule(LOGGER_JSON_TX, "eve-log", "JsonBitTorrentDHTLog",
|
|
|
|
|
"eve-log.bittorrent-dht", OutputJsonLogInitSub, ALPROTO_BITTORRENT_DHT,
|
|
|
|
|
JsonGenericDirPacketLogger, JsonLogThreadInit, JsonLogThreadDeinit, NULL);
|
|
|
|
|
JsonGenericDirPacketLogger, JsonLogThreadInit, JsonLogThreadDeinit);
|
|
|
|
|
}
|
|
|
|
|
/* ARP JSON logger */
|
|
|
|
|
JsonArpLogRegister();
|
|
|
|
|