suricata
tm-modules.h
Go to the documentation of this file.
1 /* Copyright (C) 2007-2014 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 
24 #ifndef __TM_MODULES_H__
25 #define __TM_MODULES_H__
26 
27 #include "tm-threads-common.h"
28 #include "threadvars.h"
29 
30 /* thread flags */
31 #define TM_FLAG_RECEIVE_TM 0x01
32 #define TM_FLAG_DECODE_TM 0x02
33 #define TM_FLAG_STREAM_TM 0x04
34 #define TM_FLAG_DETECT_TM 0x08
35 #define TM_FLAG_LOGAPI_TM 0x10 /**< TM is run by Log API */
36 #define TM_FLAG_MANAGEMENT_TM 0x20
37 #define TM_FLAG_COMMAND_TM 0x40
38 
39 typedef TmEcode (*ThreadInitFunc)(ThreadVars *, const void *, void **);
40 typedef TmEcode (*ThreadDeinitFunc)(ThreadVars *, void *);
41 typedef void (*ThreadExitPrintStatsFunc)(ThreadVars *, void *);
42 
43 typedef struct TmModule_ {
44  const char *name;
45 
46  /** thread handling */
47  TmEcode (*ThreadInit)(ThreadVars *, const void *, void **);
48  void (*ThreadExitPrintStats)(ThreadVars *, void *);
50 
51  /** the packet processing function */
52  TmEcode (*Func)(ThreadVars *, Packet *, void *);
53 
54  TmEcode (*PktAcqLoop)(ThreadVars *, void *, void *);
55 
56  /** terminates the capture loop in PktAcqLoop */
58 
59  TmEcode (*Management)(ThreadVars *, void *);
60 
61  /** global Init/DeInit */
62  TmEcode (*Init)(void);
63  TmEcode (*DeInit)(void);
64 #ifdef UNITTESTS
65  void (*RegisterTests)(void);
66 #endif
67  uint8_t cap_flags; /**< Flags to indicate the capability requierment of
68  the given TmModule */
69  /* Other flags used by the module */
70  uint8_t flags;
72 
74 
75 /**
76  * Structure that output modules use to maintain private data.
77  */
78 typedef struct OutputCtx_ {
79 
80  /** Pointer to data private to the output. */
81  void *data;
82 
83  /** Pointer to a cleanup function. */
84  void (*DeInit)(struct OutputCtx_ *);
85 
86  TAILQ_HEAD(, OutputModule_) submodules;
88 
89 TmModule *TmModuleGetByName(const char *name);
90 TmModule *TmModuleGetById(int id);
91 int TmModuleGetIdByName(const char *name);
93 TmEcode TmModuleRegister(char *name, int (*module_func)(ThreadVars *, Packet *, void *));
94 void TmModuleDebugList(void);
95 void TmModuleRegisterTests(void);
96 #ifdef PROFILING
97 const char * TmModuleTmmIdToString(TmmId id);
98 #endif
99 void TmModuleRunInit(void);
100 void TmModuleRunDeInit(void);
101 
102 #endif /* __TM_MODULES_H__ */
103 
TmModule_::cap_flags
uint8_t cap_flags
Definition: tm-modules.h:67
TmModuleGetIDForTM
int TmModuleGetIDForTM(TmModule *tm)
Given a TM Module, returns its id.
Definition: tm-modules.c:110
TmModuleGetIdByName
int TmModuleGetIdByName(const char *name)
get the id of a module from it's name
Definition: tm-modules.c:74
TmModuleGetById
TmModule * TmModuleGetById(int id)
Returns a TM Module by its id.
Definition: tm-modules.c:90
tm-threads-common.h
TmModuleTmmIdToString
const char * TmModuleTmmIdToString(TmmId id)
Maps the TmmId, to its string equivalent.
Definition: tm-modules.c:204
TmModuleGetByName
TmModule * TmModuleGetByName(const char *name)
get a tm module ptr by name
Definition: tm-modules.c:53
OutputCtx_::data
void * data
Definition: tm-modules.h:81
TmModule_::PktAcqLoop
TmEcode(* PktAcqLoop)(ThreadVars *, void *, void *)
Definition: tm-modules.h:54
OutputCtx_
Definition: tm-modules.h:78
TmModule_::ThreadDeinit
TmEcode(* ThreadDeinit)(ThreadVars *, void *)
Definition: tm-modules.h:49
TmModuleRegisterTests
void TmModuleRegisterTests(void)
register all unittests for the tm modules
Definition: tm-modules.c:166
OutputCtx_::TAILQ_HEAD
TAILQ_HEAD(, OutputModule_) submodules
TmModule_::PktAcqBreakLoop
TmEcode(* PktAcqBreakLoop)(ThreadVars *, void *)
Definition: tm-modules.h:57
TmModule_::Init
TmEcode(* Init)(void)
Definition: tm-modules.h:62
ThreadVars_
Per thread variable structure.
Definition: threadvars.h:57
TmModuleRegister
TmEcode TmModuleRegister(char *name, int(*module_func)(ThreadVars *, Packet *, void *))
TmModule_::Management
TmEcode(* Management)(ThreadVars *, void *)
Definition: tm-modules.h:59
TmModule_::Func
TmEcode(* Func)(ThreadVars *, Packet *, void *)
Definition: tm-modules.h:52
ThreadInitFunc
TmEcode(* ThreadInitFunc)(ThreadVars *, const void *, void **)
Definition: tm-modules.h:39
Packet_
Definition: decode.h:428
TmModuleDebugList
void TmModuleDebugList(void)
Definition: tm-modules.c:35
TMM_SIZE
@ TMM_SIZE
Definition: tm-threads-common.h:79
TmModule_::RegisterTests
void(* RegisterTests)(void)
Definition: tm-modules.h:65
TmEcode
TmEcode
Definition: tm-threads-common.h:83
TmModuleRunDeInit
void TmModuleRunDeInit(void)
Definition: tm-modules.c:147
TmModule_::name
const char * name
Definition: tm-modules.h:44
TmModuleRunInit
void TmModuleRunInit(void)
Definition: tm-modules.c:129
TmModule_
Definition: tm-modules.h:43
OutputCtx_::DeInit
void(* DeInit)(struct OutputCtx_ *)
Definition: tm-modules.h:84
OutputCtx
struct OutputCtx_ OutputCtx
ThreadExitPrintStatsFunc
void(* ThreadExitPrintStatsFunc)(ThreadVars *, void *)
Definition: tm-modules.h:41
TmModule_::ThreadInit
TmEcode(* ThreadInit)(ThreadVars *, const void *, void **)
Definition: tm-modules.h:47
TmmId
TmmId
Thread Model Module id's.
Definition: tm-threads-common.h:33
TmModule_::ThreadExitPrintStats
void(* ThreadExitPrintStats)(ThreadVars *, void *)
Definition: tm-modules.h:48
threadvars.h
TmModule
struct TmModule_ TmModule
OutputModule_
Definition: output.h:56
tmm_modules
TmModule tmm_modules[TMM_SIZE]
Definition: tm-modules.c:33
TmModule_::flags
uint8_t flags
Definition: tm-modules.h:70
TmModule_::DeInit
TmEcode(* DeInit)(void)
Definition: tm-modules.h:63
ThreadDeinitFunc
TmEcode(* ThreadDeinitFunc)(ThreadVars *, void *)
Definition: tm-modules.h:40