summaryrefslogtreecommitdiffstats
path: root/src/suricata-plugin.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/suricata-plugin.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/suricata-plugin.h b/src/suricata-plugin.h
new file mode 100644
index 0000000..3296b51
--- /dev/null
+++ b/src/suricata-plugin.h
@@ -0,0 +1,77 @@
+/* Copyright (C) 2020-2021 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
+ * Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * version 2 along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+#ifndef __SURICATA_PLUGIN_H__
+#define __SURICATA_PLUGIN_H__
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include "conf.h"
+
+/**
+ * The size of the data chunk inside each packet structure a plugin
+ * has for private data (Packet->plugin_v).
+ */
+#define PLUGIN_VAR_SIZE 64
+
+/**
+ * Structure to define a Suricata plugin.
+ */
+typedef struct SCPlugin_ {
+ const char *name;
+ const char *license;
+ const char *author;
+ void (*Init)(void);
+} SCPlugin;
+
+typedef SCPlugin *(*SCPluginRegisterFunc)(void);
+
+/**
+ * Structure used to define an Eve output file type plugin.
+ */
+typedef struct SCEveFileType_ {
+ /* The name of the output, used to specify the output in the filetype section
+ * of the eve-log configuration. */
+ const char *name;
+ /* Init Called on first access */
+ int (*Init)(ConfNode *conf, bool threaded, void **init_data);
+ /* Write - Called on each write to the object */
+ int (*Write)(const char *buffer, int buffer_len, void *init_data, void *thread_data);
+ /* Close - Called on final close */
+ void (*Deinit)(void *init_data);
+ /* ThreadInit - Called for each thread using file object*/
+ int (*ThreadInit)(void *init_data, int thread_id, void **thread_data);
+ /* ThreadDeinit - Called for each thread using file object */
+ int (*ThreadDeinit)(void *init_data, void *thread_data);
+ TAILQ_ENTRY(SCEveFileType_) entries;
+} SCEveFileType;
+
+bool SCRegisterEveFileType(SCEveFileType *);
+
+typedef struct SCCapturePlugin_ {
+ char *name;
+ void (*Init)(const char *args, int plugin_slot, int receive_slot, int decode_slot);
+ int (*ThreadInit)(void *ctx, int thread_id, void **thread_ctx);
+ int (*ThreadDeinit)(void *ctx, void *thread_ctx);
+ const char *(*GetDefaultMode)(void);
+ TAILQ_ENTRY(SCCapturePlugin_) entries;
+} SCCapturePlugin;
+
+int SCPluginRegisterCapture(SCCapturePlugin *);
+
+#endif /* __SURICATA_PLUGIN_H */