aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/suricata/src/util-spm-bm.h
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/suricata/src/util-spm-bm.h')
-rw-r--r--framework/src/suricata/src/util-spm-bm.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/framework/src/suricata/src/util-spm-bm.h b/framework/src/suricata/src/util-spm-bm.h
new file mode 100644
index 00000000..b3b97ced
--- /dev/null
+++ b/framework/src/suricata/src/util-spm-bm.h
@@ -0,0 +1,49 @@
+/* Copyright (C) 2007-2010 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.
+ */
+
+/**
+ * \file
+ *
+ * \author Pablo Rincon Crespo <pablo.rincon.crespo@gmail.com>
+ *
+ */
+
+#ifndef __UTIL_SPM_BM__
+#define __UTIL_SPM_BM__
+
+#include "suricata-common.h"
+#include "suricata.h"
+
+#define ALPHABET_SIZE 256
+
+/* Context for booyer moore */
+typedef struct BmCtx_ {
+ uint16_t bmBc[ALPHABET_SIZE];
+ uint16_t *bmGs; // = SCMalloc(sizeof(int32_t)*(needlelen + 1));
+} BmCtx;
+
+/** Prepare and return a Boyer Moore context */
+BmCtx *BoyerMooreCtxInit(uint8_t *needle, uint16_t needle_len);
+BmCtx *BoyerMooreNocaseCtxInit(uint8_t *needle, uint16_t needle_len);
+
+void BoyerMooreCtxToNocase(BmCtx *, uint8_t *, uint16_t);
+uint8_t *BoyerMoore(uint8_t *x, uint16_t m, uint8_t *y, int32_t n, BmCtx *bm_ctx);
+uint8_t *BoyerMooreNocase(uint8_t *x, uint16_t m, uint8_t *y, int32_t n, BmCtx *bm_ctx);
+void BoyerMooreCtxDeInit(BmCtx *);
+
+#endif /* __UTIL_SPM_BM__ */
+