Stash for source insight

This commit is contained in:
Zheng Chao
2022-10-26 10:25:16 +08:00
parent e5c9d7a2a0
commit 18ece0b026
3 changed files with 59 additions and 25 deletions

View File

@@ -523,26 +523,6 @@ error_out:
return ret;
}
void * HASH_fetch_by_id(MESA_htable_handle hash,int id)
{
return MESA_htable_search(hash,(unsigned char*)&(id),sizeof(id));
}
int HASH_add_by_id(MESA_htable_handle hash,int id,void*data)
{
int ret=0;
ret=MESA_htable_add(hash
,(unsigned char*)&(id)
,sizeof(id)
,data);
return ret;
}
int HASH_delete_by_id(MESA_htable_handle hash,int id)
{
//destroy function had been initialized when hash create.
int ret=-1;
ret=MESA_htable_del(hash,(unsigned char*)&id, sizeof(id), NULL);
return ret;
}
MAAT_RULE_EX_DATA rule_ex_data_new(const struct Maat_rule_head * rule_head, const char* srv_def, const struct compile_ex_data_idx* ex_desc)
{
MAAT_RULE_EX_DATA ad=NULL;

View File

@@ -1,5 +1,6 @@
#include <hs_compile.h>
#include <hs_runtime.h>
#include <Maat_utils.h>
struct hs_adapter
{
hs_database_t *hs_pure_literal_db;
@@ -7,11 +8,51 @@ struct hs_adapter
struct bool_matcher *logical_matcher;
int mode;
int n_thread;
size_t regex_cnt;
size_t regex_sub_pattern_cnt;
size_t pure_lit_cnt;
size_t pure_lit_sub_pattern_cnt;
void **user_tag_array;
hs_scratch_t *scratchs[];
};
struct hs_adapter *hs_adapter_new(struct hs_expression ** exprs, size_t n_expr, int scan_mode, int n_thread)
{
struct hs_adapter *hsa=ALLOC(struct hs_adapter, 1);
size_t i=0, j=0;
unsigned int *hs_ids=NULL;
for(i=0; i<n_expr; i++)
{
if(exprs[i].is_regex)
{
hsa->regex_cnt++;
hsa->regex_sub_pattern_cnt=exprs[i].n_sub_pattern;
}
else
{
hsa->pure_lit_cnt++;
hsa->pure_lit_sub_pattern_cnt++;
}
}
const char **regex_exprs=NULL, **pure_lit_exprs=NULL;
if(hsa->regex_sub_pattern_cnt>0)
{
regex_exprs=ALLOC(char *, hsa->regex_sub_pattern_cnt);
}
if(hsa->pure_lit_sub_pattern_cnt>0)
{
pure_lit_exprs=ALLOC(char *, hsa->pure_lit_sub_pattern_cnt)
}
size_t sub_pure_lit_idx=0, sub_regex_idx=0;
for(i=0; i<n_expr; i++)
{
for(j=0; j<exprs[i]->n_sub_pattern; j++)
{
regex_exprs[j]=exprs[i].
}
sub_pure_lit_idx
}
struct bool_expr *bool_exprs=ALLOC(struct bool_expr, 1);
}
void hs_adpter_free(struct hs_adapter *adapter)
{
@@ -20,3 +61,7 @@ void hs_adpter_free(struct hs_adapter *adapter)
int hs_adapter_scan(struct hs_adapter *adapter, int thread_id, const char* data, unsigned int length, void **matched_tags, size_t n_tag)
{
}
int hs_adapter_open_stream(struct hs_adapter *adapter, int thread_id)
{
}

View File

@@ -16,14 +16,23 @@ struct hs_pattern
struct hs_expression
{
void *user_tag;
enum MAAT_EXPR_TYPE type;
size_t n_sub_pattern;
void * user_tag;
int is_regex; //if is_regex==1, then n_sub_pattern must be 1
size_t n_sub_pattern; //must not exceed HSA_MAX_SUB_STRING_NUM
struct hs_pattern sub_patterns[];
};
struct hs_adapter;
#define HSA_SCAN_MODE_BLOCK 0
#define HSA_SCAN_MODE_STREAM 1
/**
* @param scan_mode
* HSA_SCAN_MODE_BLOCK or HSA_SCAN_MODE_STREAM
* @param exprs
* Expressions to match, it's life time must be longger than the hs_adapter.
*/
struct hs_adapter *hs_adapter_new(const struct hs_expression ** exprs, size_t n_expr, int scan_mode, int n_thread);
void hs_adpter_free(struct hs_adapter *adapter);
void hs_adapter_free(struct hs_adapter *adapter);
int hs_adapter_scan(struct hs_adapter *adapter, int thread_id, const char* data, unsigned int length, void **matched_tags, size_t n_tag);