suricata
output-streaming.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 Victor Julien <victor@inliniac.net>
22 *
23 * Streaming Logger Output registration functions
24 */
25
26#ifndef SURICATA_OUTPUT_STREAMING_H
27#define SURICATA_OUTPUT_STREAMING_H
28
29#define OUTPUT_STREAMING_FLAG_OPEN 0x01
30#define OUTPUT_STREAMING_FLAG_CLOSE 0x02
31#define OUTPUT_STREAMING_FLAG_TOSERVER 0x04
32#define OUTPUT_STREAMING_FLAG_TOCLIENT 0x08
33#define OUTPUT_STREAMING_FLAG_TRANSACTION 0x10
34
39
40/** streaming logger function pointer type */
41typedef int (*SCStreamingLogger)(ThreadVars *, void *thread_data, const Flow *f,
42 const uint8_t *data, uint32_t data_len, uint64_t tx_id, uint8_t flags);
43
44/** \brief Register a streaming logger.
45 *
46 * \param logger_id An ID to uniquely identify this logger.
47 *
48 * \param name An informational name for this logger.
49 *
50 * \param LogFunc Pointer to logging function.
51 *
52 * \param initdata Initialization data that will be passed the
53 * ThreadInit.
54 *
55 * \param stream_type Type of stream to log, see
56 * SCOutputStreamingType.
57 *
58 * \param ThreadInit Pointer to thread initialization function.
59 *
60 * \param ThreadDeinit Pointer to thread de-initialization function.
61 */
62int SCOutputRegisterStreamingLogger(LoggerId logger_id, const char *name, SCStreamingLogger LogFunc,
63 void *initdata, enum SCOutputStreamingType stream_type, ThreadInitFunc ThreadInit,
64 ThreadDeinitFunc ThreadDeinit);
65
66/** Internal function: private API. */
68
69/** Internal function: private API. */
71
72#endif /* SURICATA_OUTPUT_STREAMING_H */
uint8_t flags
Definition decode-gre.h:0
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
@ STREAMING_TCP_DATA
@ STREAMING_HTTP_BODIES
void OutputStreamingLoggerRegister(void)
int SCOutputRegisterStreamingLogger(LoggerId logger_id, const char *name, SCStreamingLogger LogFunc, void *initdata, enum SCOutputStreamingType stream_type, ThreadInitFunc ThreadInit, ThreadDeinitFunc ThreadDeinit)
Register a streaming logger.
void OutputStreamingShutdown(void)
Flow data structure.
Definition flow.h:356
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