suricata
suricata-plugin.h
Go to the documentation of this file.
1 /* Copyright (C) 2020-2021 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 #ifndef SURICATA_SURICATA_PLUGIN_H
19 #define SURICATA_SURICATA_PLUGIN_H
20 
21 #include <stdint.h>
22 #include <stdbool.h>
23 
24 #include "queue.h"
25 #include "autoconf.h"
26 
27 /**
28  * The size of the data chunk inside each packet structure a plugin
29  * has for private data (Packet->plugin_v).
30  */
31 #define PLUGIN_VAR_SIZE 64
32 
33 // Do not reuse autoconf PACKAGE_VERSION which is a string
34 // Defined as major version.minor version (no patch version)
35 static const uint64_t SC_API_VERSION = 0x0800;
36 #define SC_PACKAGE_VERSION PACKAGE_VERSION
37 
38 /**
39  * Structure to define a Suricata plugin.
40  */
41 typedef struct SCPlugin_ {
42  // versioning to check suricata/plugin API compatibility
43  uint64_t version;
44  const char *suricata_version;
45  const char *name;
46  const char *plugin_version;
47  const char *license;
48  const char *author;
49  void (*Init)(void);
51 
52 typedef SCPlugin *(*SCPluginRegisterFunc)(void);
53 
54 typedef struct SCCapturePlugin_ {
55  char *name;
56  void (*Init)(const char *args, int plugin_slot, int receive_slot, int decode_slot);
57  int (*ThreadInit)(void *ctx, int thread_id, void **thread_ctx);
58  int (*ThreadDeinit)(void *ctx, void *thread_ctx);
59  const char *(*GetDefaultMode)(void);
62 
64 
65 typedef struct SCAppLayerPlugin_ {
66  const char *name;
67  void (*Register)(void);
68  void (*KeywordsRegister)(void);
69  const char *logname;
70  const char *confname;
71  bool (*Logger)(const void *tx, void *jb);
73 
75 
76 #endif /* __SURICATA_PLUGIN_H */
SCPluginRegisterCapture
int SCPluginRegisterCapture(SCCapturePlugin *)
SCAppLayerPlugin_::name
const char * name
Definition: suricata-plugin.h:66
SCAppLayerPlugin_::Logger
bool(* Logger)(const void *tx, void *jb)
Definition: suricata-plugin.h:71
SCAppLayerPlugin_::logname
const char * logname
Definition: suricata-plugin.h:69
ctx
struct Thresholds ctx
SCCapturePlugin_::Init
void(* Init)(const char *args, int plugin_slot, int receive_slot, int decode_slot)
Definition: suricata-plugin.h:56
SCAppLayerPlugin_::KeywordsRegister
void(* KeywordsRegister)(void)
Definition: suricata-plugin.h:68
SCPlugin_::version
uint64_t version
Definition: suricata-plugin.h:43
SCCapturePlugin_::ThreadInit
int(* ThreadInit)(void *ctx, int thread_id, void **thread_ctx)
Definition: suricata-plugin.h:57
SCAppLayerPlugin_::confname
const char * confname
Definition: suricata-plugin.h:70
SCCapturePlugin_::name
char * name
Definition: suricata-plugin.h:55
SCCapturePlugin_
Definition: suricata-plugin.h:54
SCPlugin_::plugin_version
const char * plugin_version
Definition: suricata-plugin.h:46
SCAppLayerPlugin_
Definition: suricata-plugin.h:65
SCPlugin_::license
const char * license
Definition: suricata-plugin.h:47
SCCapturePlugin_::TAILQ_ENTRY
TAILQ_ENTRY(SCCapturePlugin_) entries
SCPlugin_::author
const char * author
Definition: suricata-plugin.h:48
SCPlugin_
Definition: suricata-plugin.h:41
queue.h
SCPlugin_::suricata_version
const char * suricata_version
Definition: suricata-plugin.h:44
SCAppLayerPlugin_::Register
void(* Register)(void)
Definition: suricata-plugin.h:67
SCPluginRegisterAppLayer
int SCPluginRegisterAppLayer(SCAppLayerPlugin *)
SCCapturePlugin
struct SCCapturePlugin_ SCCapturePlugin
SCAppLayerPlugin
struct SCAppLayerPlugin_ SCAppLayerPlugin
SCPlugin_::Init
void(* Init)(void)
Definition: suricata-plugin.h:49
SCPlugin
struct SCPlugin_ SCPlugin
SCPlugin_::name
const char * name
Definition: suricata-plugin.h:45
SCCapturePlugin_::ThreadDeinit
int(* ThreadDeinit)(void *ctx, void *thread_ctx)
Definition: suricata-plugin.h:58