suricata
output.h
Go to the documentation of this file.
1/* Copyright (C) 2007-2024 Open Information Security Foundation
2 *
3 * You can copy, redistribute or modify this Program under the terms of
4 * the GNU General Public License version 2 as published by the Free
5 * Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * You should have received a copy of the GNU General Public License
13 * version 2 along with this program; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
15 * 02110-1301, USA.
16 */
17
18/**
19 * \file
20 *
21 * \author Endace Technology Limited, Jason Ish <jason.ish@endace.com>
22 */
23
24#ifndef SURICATA_OUTPUT_H
25#define SURICATA_OUTPUT_H
26
27#include "decode.h"
28#include "tm-modules.h"
29
30#define DEFAULT_LOG_MODE_APPEND "yes"
31#define DEFAULT_LOG_FILETYPE "regular"
32
37
38#include "output-packet.h"
39#include "output-tx.h"
40#include "output-file.h"
41#include "output-filedata.h"
42#include "output-flow.h"
43#include "output-streaming.h"
44#include "output-stats.h"
45
50
53typedef TmEcode (*OutputLogFunc)(ThreadVars *, Packet *, void *);
54typedef TmEcode (*OutputFlushFunc)(ThreadVars *, Packet *, void *);
55typedef uint32_t (*OutputGetActiveCountFunc)(void);
56
85
86/* struct for packet module and packet sub-module registration */
95
96typedef TAILQ_HEAD(OutputModuleList_, OutputModule_) OutputModuleList;
97extern OutputModuleList output_modules;
98
99void OutputRegisterModule(const char *, const char *, OutputInitFunc);
100
101void OutputRegisterPacketModule(LoggerId id, const char *name, const char *conf_name,
103void OutputRegisterPacketSubModule(LoggerId id, const char *parent_name, const char *name,
104 const char *conf_name, OutputInitSubFunc InitFunc, OutputPacketLoggerFunctions *);
105
106void OutputRegisterTxModule(LoggerId id, const char *name, const char *conf_name,
107 OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc, ThreadInitFunc ThreadInit,
108 ThreadDeinitFunc ThreadDeinit);
109void OutputRegisterTxSubModule(LoggerId id, const char *parent_name, const char *name,
110 const char *conf_name, OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
111 ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
112
113void OutputRegisterTxModuleWithCondition(LoggerId id, const char *name, const char *conf_name,
114 OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
115 TxLoggerCondition TxLogCondition, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
116void OutputRegisterTxSubModuleWithCondition(LoggerId id, const char *parent_name, const char *name,
117 const char *conf_name, OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
118 TxLoggerCondition TxLogCondition, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
119
120void OutputRegisterTxModuleWithProgress(LoggerId id, const char *name, const char *conf_name,
121 OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc, int tc_log_progress,
122 int ts_log_progress, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
123void OutputRegisterTxSubModuleWithProgress(LoggerId id, const char *parent_name, const char *name,
124 const char *conf_name, OutputInitSubFunc InitFunc, AppProto alproto, TxLogger TxLogFunc,
125 int tc_log_progress, int ts_log_progress, ThreadInitFunc ThreadInit,
126 ThreadDeinitFunc ThreadDeinit);
127
128void OutputRegisterFileSubModule(LoggerId id, const char *parent_name, const char *name,
129 const char *conf_name, OutputInitSubFunc InitFunc, SCFileLogger FileLogFunc,
130 ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
131
132void OutputRegisterFiledataModule(LoggerId id, const char *name, const char *conf_name,
133 OutputInitFunc InitFunc, SCFiledataLogger FiledataLogFunc, ThreadInitFunc ThreadInit,
134 ThreadDeinitFunc ThreadDeinit);
135
136void OutputRegisterFlowSubModule(LoggerId id, const char *parent_name, const char *name,
137 const char *conf_name, OutputInitSubFunc InitFunc, FlowLogger FlowLogFunc,
138 ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
139
140void OutputRegisterStreamingModule(LoggerId id, const char *name, const char *conf_name,
141 OutputInitFunc InitFunc, SCStreamingLogger StreamingLogFunc,
142 enum SCOutputStreamingType stream_type, ThreadInitFunc ThreadInit,
143 ThreadDeinitFunc ThreadDeinit);
144
145void OutputRegisterStatsModule(LoggerId id, const char *name, const char *conf_name,
146 OutputInitFunc InitFunc, StatsLogger StatsLogFunc, ThreadInitFunc ThreadInit,
147 ThreadDeinitFunc ThreadDeinit);
148void OutputRegisterStatsSubModule(LoggerId id, const char *parent_name, const char *name,
149 const char *conf_name, OutputInitSubFunc InitFunc, StatsLogger StatsLogFunc,
150 ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit);
151
153void OutputDeregisterAll(void);
154
155int OutputDropLoggerEnable(void);
156void OutputDropLoggerDisable(void);
157
158void OutputRegisterFileRotationFlag(int *flag);
160void OutputNotifyFileRotation(void);
161
162typedef void (*SCOnLoggingReadyCallback)(void *arg);
164void SCOnLoggingReady(void);
165
166void OutputRegisterRootLogger(ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit,
167 OutputLogFunc LogFunc, OutputGetActiveCountFunc ActiveCntFunc);
168void TmModuleLoggerRegister(void);
169
172TmEcode OutputLoggerThreadInit(ThreadVars *, const void *, void **);
175
176void OutputSetupActiveLoggers(void);
177void OutputClearActiveLoggers(void);
178
179#endif /* ! SURICATA_OUTPUT_H */
uint16_t AppProto
int(* SCFileLogger)(ThreadVars *, void *thread_data, const Packet *, const File *, void *tx, const uint64_t tx_id, uint8_t direction)
Definition output-file.h:48
int(* SCFiledataLogger)(ThreadVars *, void *thread_data, const Packet *, File *, void *tx, const uint64_t tx_id, const uint8_t *, uint32_t, uint8_t, uint8_t dir)
File-data logger function pointer type.
int(* FlowLogger)(ThreadVars *, void *thread_data, Flow *f)
Flow logger function pointer type.
Definition output-flow.h:36
bool(* PacketLogCondition)(ThreadVars *, void *thread_data, const Packet *)
Packet logger condition function point type.
int(* PacketLogger)(ThreadVars *, void *thread_data, const Packet *)
Packet logger function pointer type.
int(* StatsLogger)(ThreadVars *, void *thread_data, const StatsTable *)
int(* SCStreamingLogger)(ThreadVars *, void *thread_data, const Flow *f, const uint8_t *data, uint32_t data_len, uint64_t tx_id, uint8_t flags)
SCOutputStreamingType
bool(* TxLoggerCondition)(ThreadVars *, const Packet *, void *state, void *tx, uint64_t tx_id)
Transaction logger condition function pointer type.
Definition output-tx.h:41
int(* TxLogger)(ThreadVars *, void *thread_data, const Packet *, Flow *f, void *state, void *tx, uint64_t tx_id)
Transaction logger function pointer type.
Definition output-tx.h:34
int OutputDropLoggerEnable(void)
Definition output.c:672
void OutputRegisterStreamingModule(LoggerId id, const char *name, const char *conf_name, OutputInitFunc InitFunc, SCStreamingLogger StreamingLogFunc, enum SCOutputStreamingType stream_type, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a streaming data output module.
Definition output.c:532
void OutputRegisterFileRotationFlag(int *flag)
Register a flag for file rotation notification.
Definition output.c:692
void OutputNotifyFileRotation(void)
Notifies all registered file rotation notification flags.
Definition output.c:735
void OutputSetupActiveLoggers(void)
Definition output.c:903
void OutputLoggerExitPrintStats(ThreadVars *, void *)
void OutputUnregisterFileRotationFlag(int *flag)
Unregister a file rotation flag.
Definition output.c:715
void OutputRegisterTxModuleWithCondition(LoggerId id, const char *name, const char *conf_name, OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc, TxLoggerCondition TxLogCondition, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a tx output module with condition.
Definition output.c:349
TmEcode OutputLoggerFlush(ThreadVars *, Packet *, void *)
Definition output.c:788
void OutputRegisterStatsModule(LoggerId id, const char *name, const char *conf_name, OutputInitFunc InitFunc, StatsLogger StatsLogFunc, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a stats data output module.
Definition output.c:570
void OutputRegisterTxModule(LoggerId id, const char *name, const char *conf_name, OutputInitFunc InitFunc, AppProto alproto, TxLogger TxLogFunc, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a tx output module.
Definition output.c:398
OutputModuleList output_modules
void OutputRegisterPacketModule(LoggerId id, const char *name, const char *conf_name, OutputInitFunc InitFunc, OutputPacketLoggerFunctions *)
Register a packet output module.
Definition output.c:196
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)
Definition output.c:381
void OutputRegisterRootLogger(ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit, OutputLogFunc LogFunc, OutputGetActiveCountFunc ActiveCntFunc)
Definition output.c:874
TmEcode OutputLoggerThreadInit(ThreadVars *, const void *, void **)
Definition output.c:817
TmEcode(* OutputFlushFunc)(ThreadVars *, Packet *, void *)
Definition output.h:54
TmEcode OutputLoggerThreadDeinit(ThreadVars *, void *)
Definition output.c:848
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)
Definition output.c:357
struct OutputModule_ OutputModule
void OutputRegisterModule(const char *, const char *, OutputInitFunc)
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)
Definition output.c:406
void OutputRegisterFileSubModule(LoggerId id, const char *parent_name, const char *name, const char *conf_name, OutputInitSubFunc InitFunc, SCFileLogger FileLogFunc, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a file output sub-module.
Definition output.c:422
void OutputRegisterPacketSubModule(LoggerId id, const char *parent_name, const char *name, const char *conf_name, OutputInitSubFunc InitFunc, OutputPacketLoggerFunctions *)
Register a packet output sub-module.
Definition output.c:234
struct OutputInitResult_ OutputInitResult
void OutputDeregisterAll(void)
Deregister all modules. Useful for a memory clean exit.
Definition output.c:658
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)
Register a tx output module with progress.
Definition output.c:373
void OutputDropLoggerDisable(void)
Definition output.c:680
void OutputClearActiveLoggers(void)
Definition output.c:916
void OutputRegisterFiledataModule(LoggerId id, const char *name, const char *conf_name, OutputInitFunc InitFunc, SCFiledataLogger FiledataLogFunc, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a file data output module.
Definition output.c:459
struct OutputLoggerThreadStore_ OutputLoggerThreadStore
uint32_t(* OutputGetActiveCountFunc)(void)
Definition output.h:55
void TmModuleLoggerRegister(void)
Definition output.c:925
void OutputRegisterStatsSubModule(LoggerId id, const char *parent_name, const char *name, const char *conf_name, OutputInitSubFunc InitFunc, StatsLogger StatsLogFunc, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a stats data output sub-module.
Definition output.c:606
struct OutputPacketLoggerFunctions_ OutputPacketLoggerFunctions
void SCOnLoggingReady(void)
Invokes all registered logging ready callbacks.
Definition output.c:778
OutputInitResult(* OutputInitFunc)(SCConfNode *)
Definition output.h:51
void OutputRegisterFlowSubModule(LoggerId id, const char *parent_name, const char *name, const char *conf_name, OutputInitSubFunc InitFunc, FlowLogger FlowLogFunc, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a flow output sub-module.
Definition output.c:495
TmEcode OutputLoggerLog(ThreadVars *, Packet *, void *)
Definition output.c:803
int SCRegisterOnLoggingReady(SCOnLoggingReadyCallback callback, void *arg)
Register a callback to be called when logging is ready.
Definition output.c:757
OutputInitResult(* OutputInitSubFunc)(SCConfNode *, OutputCtx *)
Definition output.h:52
OutputModule * OutputGetModuleByConfName(const char *name)
Get an output module by name.
Definition output.c:641
TmEcode(* OutputLogFunc)(ThreadVars *, Packet *, void *)
Definition output.h:53
void(* SCOnLoggingReadyCallback)(void *arg)
Definition output.h:162
#define TAILQ_HEAD(name, type)
Definition queue.h:230
OutputCtx * ctx
Definition output.h:47
struct OutputLoggerThreadStore_ * next
Definition output.h:35
PacketLogger PacketLogFunc
Definition output.h:68
OutputInitFunc InitFunc
Definition output.h:62
AppProto alproto
Definition output.h:78
PacketLogCondition PacketConditionFunc
Definition output.h:70
TxLogger TxLogFunc
Definition output.h:71
enum SCOutputStreamingType stream_type
Definition output.h:79
LoggerId logger_id
Definition output.h:58
ThreadDeinitFunc ThreadDeinit
Definition output.h:66
StatsLogger StatsLogFunc
Definition output.h:77
const char * conf_name
Definition output.h:60
int tc_log_progress
Definition output.h:80
PacketLogger PacketFlushFunc
Definition output.h:69
ThreadInitFunc ThreadInit
Definition output.h:65
OutputInitSubFunc InitSubFunc
Definition output.h:63
SCStreamingLogger StreamingLogFunc
Definition output.h:76
const char * name
Definition output.h:59
SCFileLogger FileLogFunc
Definition output.h:73
int ts_log_progress
Definition output.h:81
TAILQ_ENTRY(OutputModule_) entries
FlowLogger FlowLogFunc
Definition output.h:75
SCFiledataLogger FiledataLogFunc
Definition output.h:74
TxLoggerCondition TxLogCondition
Definition output.h:72
const char * parent_name
Definition output.h:61
PacketLogCondition ConditionFunc
Definition output.h:90
ThreadExitPrintStatsFunc ThreadExitPrintStatsFunc
Definition output.h:93
ThreadInitFunc ThreadInitFunc
Definition output.h:91
ThreadDeinitFunc ThreadDeinitFunc
Definition output.h:92
Per thread variable structure.
Definition threadvars.h:58
TmEcode(* ThreadDeinitFunc)(ThreadVars *, void *)
Definition tm-modules.h:44
TmEcode(* ThreadInitFunc)(ThreadVars *, const void *, void **)
Definition tm-modules.h:43
const char * name