1 /**************************************************************************** 2 * 3 * Copyright (C) 2014-2021 Cisco and/or its affiliates. All rights reserved. 4 * Copyright (C) 2005-2013 Sourcefire, Inc. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License Version 2 as 8 * published by the Free Software Foundation. You may not use, modify or 9 * distribute this program under any other version of the GNU General 10 * Public License. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 ****************************************************************************/ 22 23 24 #ifndef __STR_SEARCH_H__ 25 #define __STR_SEARCH_H__ 26 27 #include "mpse_methods.h" 28 29 /*search pattern case sensitivity */ 30 #define STR_SEARCH_CASE_SENSITIVE 0 31 #define STR_SEARCH_CASE_INSENSITIVE 1 32 33 /* Function prototypes */ 34 typedef int (*MatchFunction)(void *, void *, int, void *, void *); 35 36 int SearchInit(unsigned int num); 37 int SearchGetHandle(void); 38 int SearchPutHandle(unsigned int id); 39 int SearchReInit(unsigned int i); 40 void SearchFree(void); 41 void SearchFreeId(unsigned id); 42 void SearchAdd(unsigned int mpse_id, const char *pat, unsigned int pat_len, int id); 43 void SearchPrepPatterns(unsigned int mpse_id); 44 int SearchFindString(unsigned int mpse_id, const char *str, unsigned int str_len, int confine, MatchFunction); 45 46 47 void * SearchInstanceNew( void ); 48 void * SearchInstanceNewEx( unsigned method ); 49 void SearchInstanceFree( void * insance ); 50 void SearchInstanceAdd( void * instance, const char *pat, unsigned int pat_len, int id); 51 void SearchInstanceAddEx( void * instance, const char *pat, unsigned int pat_len, void* id, unsigned nocase); 52 void SearchInstancePrepPatterns( void * instance ); 53 int SearchInstanceFindString( void * instance, const char *str, unsigned int str_len, int confine, MatchFunction); 54 int SearchInstanceFindStringAll( void * instance, const char *str, unsigned int str_len, int confine, MatchFunction, void *userData); 55 int SearchInstanceSFindString( void * instance, const char *str, unsigned int str_len, int confine, MatchFunction, int *state); 56 57 typedef struct _search_api 58 { 59 int (*search_init)(unsigned int); 60 61 int (*search_reinit)(unsigned int); 62 63 void (*search_free)(void); 64 65 void (*search_add)(unsigned int, const char *, unsigned int, int); 66 67 void (*search_prep)(unsigned int); 68 69 int (*search_find)(unsigned int, const char *, unsigned int, int, MatchFunction); 70 71 /* 6/1/06*/ 72 void (*search_free_id)(unsigned id); 73 74 int (*search_get_handle)(void); 75 int (*search_put_handle)(unsigned int); 76 77 void * (*search_instance_new)(void); 78 void * (*search_instance_new_ex)(unsigned method); 79 void (*search_instance_free)(void * instance); 80 void (*search_instance_add) (void * instance, const char *s, unsigned int s_len, int s_id); 81 void (*search_instance_add_ex) (void * instance, const char *s, unsigned int s_len, void* s_id, unsigned nocase); 82 void (*search_instance_prep)(void * instance ); 83 int (*search_instance_find)(void * instance, const char *s, unsigned int s_len, int confine, MatchFunction); 84 int (*search_instance_find_all)(void * instance, const char *s, unsigned int s_len, int confine, MatchFunction, void *userData); 85 char * (*search_instance_find_end)(char *match_ptr, int buflen, char *search_str, int search_len); 86 int (*stateful_search_instance_find)(void * instance, const char *s, unsigned int s_len, int confine, MatchFunction, int *state); 87 88 } SearchAPI; 89 90 extern SearchAPI *search_api; 91 92 #endif /* __STR_SEARCH_H__ */ 93 94