diff --git a/examples/plugins/c-custom-loggers/custom-logger.c b/examples/plugins/c-custom-loggers/custom-logger.c index 59c2077c0f..ba4274639d 100644 --- a/examples/plugins/c-custom-loggers/custom-logger.c +++ b/examples/plugins/c-custom-loggers/custom-logger.c @@ -92,7 +92,7 @@ static TmEcode ThreadDeinit(ThreadVars *tv, void *data) static void Init(void) { - OutputRegisterPacketLogger(LOGGER_USER, "custom-packet-logger", CustomPacketLogger, + SCOutputRegisterPacketLogger(LOGGER_USER, "custom-packet-logger", CustomPacketLogger, CustomPacketLoggerCondition, NULL, ThreadInit, ThreadDeinit); OutputRegisterFlowLogger( "custom-flow-logger", CustomFlowLogger, NULL, ThreadInit, ThreadDeinit); diff --git a/src/output-packet.c b/src/output-packet.c index 9576e61153..14dabe7c69 100644 --- a/src/output-packet.c +++ b/src/output-packet.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2022 Open Information Security Foundation +/* Copyright (C) 2007-2024 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -52,7 +52,7 @@ typedef struct OutputPacketLogger_ { static OutputPacketLogger *list = NULL; -int OutputRegisterPacketLogger(LoggerId logger_id, const char *name, PacketLogger LogFunc, +int SCOutputRegisterPacketLogger(LoggerId logger_id, const char *name, PacketLogger LogFunc, PacketLogCondition ConditionFunc, void *initdata, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit) { diff --git a/src/output-packet.h b/src/output-packet.h index 03cf2ee3f5..4d7309d7f2 100644 --- a/src/output-packet.h +++ b/src/output-packet.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2013 Open Information Security Foundation +/* Copyright (C) 2007-2024 Open Information Security Foundation * * You can copy, redistribute or modify this Program under the terms of * the GNU General Public License version 2 as published by the Free @@ -29,19 +29,44 @@ #include "tm-threads.h" #include "decode.h" -/** packet logger function pointer type */ +/** + * \brief Packet logger function pointer type. + */ typedef int (*PacketLogger)(ThreadVars *, void *thread_data, const Packet *); -/** packet logger condition function pointer type, - * must return true for packets that should be logged +/** + * \brief Packet logger condition function point type. + * + * Must return true for the packet to be passed onto the packet + * logger. */ typedef bool (*PacketLogCondition)(ThreadVars *, void *thread_data, const Packet *); -int OutputRegisterPacketLogger(LoggerId logger_id, const char *name, PacketLogger LogFunc, +/** + * \brief Register a packet logger. + * + * \param logger_id An ID used to distinguish this logger from others + * while profiling. + * \param name An informational name for this logger. Used only for + * debugging. + * \param LogFunc A function that will be called to log each packet + * that passes the condition test. + * \param ConditionFunc A function to test if the packet should be passed to + * the logging function. + * \param initdata Initialization data that will pass to the + * ThreadInitFunc. + * \param ThreadInitFunc Thread initialization function. + * \param ThreadDeinitFunc Thread de-initialization function. + * + * \retval 0 on success, -1 on failure. + */ +int SCOutputRegisterPacketLogger(LoggerId logger_id, const char *name, PacketLogger LogFunc, PacketLogCondition ConditionFunc, void *initdata, ThreadInitFunc, ThreadDeinitFunc); +/** Internal function: private API. */ void OutputPacketLoggerRegister(void); +/** Internal function: private API. */ void OutputPacketShutdown(void); #endif /* SURICATA_OUTPUT_PACKET_H */ diff --git a/src/runmodes.c b/src/runmodes.c index 362555603d..e2d88bfbb4 100644 --- a/src/runmodes.c +++ b/src/runmodes.c @@ -618,9 +618,8 @@ static void SetupOutput( if (module->PacketLogFunc) { SCLogDebug("%s is a packet logger", module->name); - OutputRegisterPacketLogger(module->logger_id, module->name, - module->PacketLogFunc, module->PacketConditionFunc, output_ctx, - module->ThreadInit, module->ThreadDeinit); + SCOutputRegisterPacketLogger(module->logger_id, module->name, module->PacketLogFunc, + module->PacketConditionFunc, output_ctx, module->ThreadInit, module->ThreadDeinit); } else if (module->TxLogFunc) { SCLogDebug("%s is a tx logger", module->name); OutputRegisterTxLogger(module->logger_id, module->name, module->alproto,