初步完成模糊哈希配置加载的集成,分离Maat_api.c

This commit is contained in:
zhengchao
2015-11-10 18:29:42 +08:00
parent d6b3a2d2be
commit fec47fde8b
5 changed files with 1353 additions and 1030 deletions

View File

@@ -170,7 +170,7 @@ void Maat_stream_scan_string_end(stream_para_t* stream_para);
stream_para_t Maat_stream_scan_digest_start(Maat_feather_t feather,int table_id,unsigned long long total_len,int thread_num);
int Maat_stream_scan_digest(stream_para_t* stream_para
,const char* data,int data_len
,const char* data,int data_len,unsigned long long offset
,struct Maat_rule_t*result,int rule_num
,scan_status_t* mid);
void Maat_stream_scan_digest_end(stream_para_t* stream_para);

1049
src/entry/Maat_api.cpp Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -105,6 +105,15 @@ struct db_intval_rule_t
interval_rule_t intval;
int is_valid;
};
struct db_digest_rule_t
{
int region_id;
int group_id;
unsigned long long orgin_len;
const char* digest_string;
short confidence_degree;
int is_valid;
};
struct _head_Maat_rule_t
{
int config_id;
@@ -233,7 +242,8 @@ struct _stream_para_t
char* scan_buff;
void* rs_stream_para;
long acc_scan_len;
unsigned long long total_len;
fuzzy_handle_t *fuzzy_hash_handle;
};
struct _Maat_scanner_t
{
@@ -241,12 +251,15 @@ struct _Maat_scanner_t
time_t last_update_time;
int *ref_cnt; //optimized for cache_alignment 64
rule_scanner_t region;
pthread_rwlock_t digest_rwlock[MAX_TABLE_NUM];
GIE_handle_t* digest_handle[MAX_TABLE_NUM];
MESA_htable_handle region_hash;
MESA_htable_handle group_hash;
MESA_htable_handle compile_hash;
unsigned int cfg_num;
unsigned int exprid_generator;
MESA_lqueue_head region_update_q;
MESA_lqueue_head digest_update_q[MAX_TABLE_NUM];
void * expr_compiler;
scan_result_t *region_rslt_buff;
MESA_lqueue_head tomb_ref;//reference of feather->garbage_q

View File

@@ -17,36 +17,40 @@ typedef struct
typedef struct
{
unsigned int id;
unsigned long long orilen;
char * fh;
short operation;//GIE_INSERT_OPT or GIE_DELETE_OPT.if operation is GIE_DELETE_OPT, only id is needed;
short cfds_lvl;
unsigned long long origin_len;
char * fuzzy_hash;
void * tag;
}fuzzy_digest_t;
}GIE_digest_t;
typedef struct
{
unsigned int id;
int confidence_level;
unsigned long long orilen;
short cfds_lvl;
unsigned long long origin_len;
void * tag;
}result_t;
}GIE_result_t;
typedef struct
{
unsigned long long precision;
int confidence_level_threshold;
unsigned long long index_interval;
// int confidence_level_threshold;
double query_accuracy;
}GIE_create_para_t;
GIE_handle_t * GIE_create(GIE_create_para_t * usrpara);
GIE_handle_t * GIE_create(const GIE_create_para_t * para);
int GIE_update(GIE_handle_t * handle, fuzzy_digest_t ** digests, int size, int opration);
int GIE_update(GIE_handle_t * handle, GIE_digest_t ** digests, int size);
int GIE_query(GIE_handle_t * handle, unsigned long long orilen, char * fuzzy_string, int strsize, result_t * results, int size);
//return actual matched result count
//return 0 when matched nothing;
//return -1 when error occurs;
int GIE_query(GIE_handle_t * handle, unsigned long long origin_len, const char * fuzzy_string, GIE_result_t * results, int result_size);
void GIE_destory(GIE_handle_t * handle);