diff --git a/src/inc_internal/maat_command.h b/src/inc_internal/maat_command.h index 52882a7..814bcf5 100644 --- a/src/inc_internal/maat_command.h +++ b/src/inc_internal/maat_command.h @@ -24,6 +24,7 @@ extern "C" #include "log/log.h" #include "uthash/uthash.h" #include "hiredis/hiredis.h" +#include "maat_limits.h" enum maat_operation { MAAT_OP_DEL = 0, @@ -50,7 +51,7 @@ struct serial_rule { enum maat_operation op;//0: delete, 1: add. long long rule_id; long long timeout; // absolute unix time. - char table_name[NAME_MAX]; + char table_name[MAX_NAME_STR_LEN]; char *table_line; int n_foreign; struct foreign_key *f_keys; diff --git a/src/inc_internal/maat_compile.h b/src/inc_internal/maat_compile.h index 67937d4..a95cd6a 100644 --- a/src/inc_internal/maat_compile.h +++ b/src/inc_internal/maat_compile.h @@ -65,7 +65,7 @@ long long compile_runtime_update_err_count(void *compile_runtime); int compile_runtime_match(struct compile_runtime *compile_rt, long long *compile_ids, size_t compile_ids_size, struct maat_state *state); -size_t compile_runtime_get_hit_paths(struct compile_runtime *compile_rt, +size_t compile_runtime_get_hit_paths(struct compile_runtime *compile_rt, int thread_id, struct maat_compile_state *compile_state, struct maat_hit_path *hit_path_array, size_t array_size, size_t n_internal_hit_path); @@ -96,7 +96,7 @@ long long group2compile_runtime_update_err_count(void *g2c_runtime); /* maat compile state API */ struct maat_compile_state; -struct maat_compile_state *maat_compile_state_new(int thread_id); +struct maat_compile_state *maat_compile_state_new(void); void maat_compile_state_reset(struct maat_compile_state *compile_state); void maat_compile_state_free(struct maat_compile_state *compile_state); @@ -109,6 +109,7 @@ size_t maat_compile_state_get_internal_hit_paths(struct maat_compile_state *comp struct maat_hit_path *hit_path_array, size_t array_size); size_t maat_compile_state_get_hit_groups(struct maat_compile_state *compile_state, + struct group2group_runtime *g2g_rt, struct maat_hit_group *hit_group_array, size_t array_size); diff --git a/src/inc_internal/maat_limits.h b/src/inc_internal/maat_limits.h index 8ae4b8e..ade14e6 100644 --- a/src/inc_internal/maat_limits.h +++ b/src/inc_internal/maat_limits.h @@ -18,7 +18,8 @@ extern "C" #define MAX_KEYWORDS_STR 1024 #define MAX_MAAT_STAT_NUM 64 - +#define MAX_NAME_STR_LEN 64 + #ifdef __cplusplus } #endif diff --git a/src/inc_internal/maat_rule.h b/src/inc_internal/maat_rule.h index 05ee23f..13d32d6 100644 --- a/src/inc_internal/maat_rule.h +++ b/src/inc_internal/maat_rule.h @@ -201,24 +201,24 @@ enum last_scan_flag { struct maat_state { struct maat *maat_instance; - int thread_id; - int compile_table_id; - enum district_flag is_set_district; - enum last_scan_flag is_last_scan; - long long district_id; //-1: Any District; -2: Unkonwn District; - int scan_cnt; - struct maat_compile_state *compile_state; + struct maat_compile_state *compile_state; + int scan_cnt; + int district_id; //-1: Any District; -2: Unkonwn District; + uint16_t thread_id; + int16_t compile_table_id; + uint8_t is_set_district; + uint8_t is_last_scan; }; int my_scandir(const char *dir, struct dirent ***namelist, int(*filter)(const struct dirent *), int(*compar)(const void *, const void *)); -struct item_district *item_district_new(long long district_id); +struct item_district *item_district_new(int district_id); void item_district_free(void *item_district); -long long item_district_id(struct item_district *item_dist); +int item_district_id(struct item_district *item_dist); void *rule_monitor_loop(void *arg); diff --git a/src/json2iris.c b/src/json2iris.c index 8367ca2..6eeb7b6 100644 --- a/src/json2iris.c +++ b/src/json2iris.c @@ -42,7 +42,7 @@ struct group_info { }; struct iris_table { - char table_name[NAME_MAX]; + char table_name[MAX_NAME_STR_LEN]; char table_path[PATH_MAX]; int line_count; enum table_type table_type; diff --git a/src/maat_api.c b/src/maat_api.c index fae2bf7..fc467fe 100644 --- a/src/maat_api.c +++ b/src/maat_api.c @@ -1772,6 +1772,7 @@ int maat_state_set_scan_district(struct maat_state *state, int vtable_id, } int ret = -1; + long long district_id; table_type = table_manager_get_table_type(maat_instance->tbl_mgr, physical_table_id); void *runtime = table_manager_get_runtime(maat_instance->tbl_mgr, @@ -1781,18 +1782,15 @@ int maat_state_set_scan_district(struct maat_state *state, int vtable_id, switch (table_type) { case TABLE_TYPE_FLAG_PLUS: ret = flag_runtime_set_scan_district((struct flag_runtime *)runtime, - district, district_len, - &(state->district_id)); + district, district_len, &district_id); break; case TABLE_TYPE_EXPR_PLUS: ret = expr_runtime_set_scan_district((struct expr_runtime *)runtime, - district, district_len, - &(state->district_id)); + district, district_len, &district_id); break; case TABLE_TYPE_INTERVAL_PLUS: ret = interval_runtime_set_scan_district((struct interval_runtime *)runtime, - district, district_len, - &(state->district_id)); + district, district_len, &district_id); break; default: log_error(maat_instance->logger, MODULE_MAAT_API, @@ -1803,6 +1801,8 @@ int maat_state_set_scan_district(struct maat_state *state, int vtable_id, if (ret < 0) { state->district_id = DISTRICT_UNKNOWN; + } else { + state->district_id = (int)district_id; } state->is_set_district = DISTRICT_FLAG_SET; @@ -1881,9 +1881,8 @@ int maat_state_get_hit_paths(struct maat_state *state, struct maat_hit_path *pat (struct group2group_runtime *)g2g_runtime, paths, n_path); - return compile_runtime_get_hit_paths((struct compile_runtime *)compile_rt, - state->compile_state, paths, n_path, - internal_hit_path_cnt); + return compile_runtime_get_hit_paths((struct compile_runtime *)compile_rt, state->thread_id, + state->compile_state, paths, n_path, internal_hit_path_cnt); } int maat_state_get_hit_groups(struct maat_state *state, struct maat_hit_group *groups, @@ -1893,7 +1892,11 @@ int maat_state_get_hit_groups(struct maat_state *state, struct maat_hit_group *g return -1; } - return maat_compile_state_get_hit_groups(state->compile_state, groups, n_group); + void *g2g_runtime = table_manager_get_runtime(state->maat_instance->tbl_mgr, + state->maat_instance->g2g_table_id); + return maat_compile_state_get_hit_groups(state->compile_state, + (struct group2group_runtime *)g2g_runtime, + groups, n_group); } int maat_hit_group_compile_id(struct maat *instance, struct maat_hit_group *group) diff --git a/src/maat_compile.c b/src/maat_compile.c index 1af90aa..699e469 100644 --- a/src/maat_compile.c +++ b/src/maat_compile.c @@ -38,7 +38,6 @@ struct compile_schema { struct table_manager *ref_tbl_mgr; struct log_handle *logger; int table_id; //ugly - char table_name[NAME_MAX]; }; struct group2compile_schema { @@ -85,14 +84,14 @@ struct literal_clause { }; struct compile_rule { - long long magic_num; + uint32_t magic_num; + int declared_clause_num; long long compile_id; char *table_line; size_t table_line_len; struct compile_schema *ref_schema; void **ex_data; - int declared_clause_num; - char table_name[NAME_MAX]; + char table_name[MAX_NAME_STR_LEN]; }; struct group_reference { @@ -140,38 +139,35 @@ struct compile_sort_para { #define MAAT_COMPILE_MAGIC 0x4a5b6c7d struct maat_compile { - unsigned int magic; - long long compile_id; - char table_name[NAME_MAX]; - int actual_clause_num; + uint32_t magic; + int actual_clause_num; int declared_clause_num; int not_clause_cnt; + long long compile_id; + char table_name[MAX_NAME_STR_LEN]; void *user_data; void (*user_data_free)(void *); - UT_hash_handle hh; struct maat_clause_state clause_states[MAX_ITEMS_PER_BOOL_EXPR]; }; struct maat_internal_hit_path { + long long item_id; + long long group_id; int Nth_scan; int Nth_hit_item; - long long item_id; - long long group_id; int vtable_id; }; struct maat_compile_state { - int thread_id; + uint8_t this_scan_hit_item_flag; + uint8_t not_clause_hit_flag; int Nth_scan; time_t compile_rt_version; - size_t this_scan_hit_item_cnt; - int not_clause_hitted_flag; - size_t hit_path_cnt; UT_array *internal_hit_paths; UT_array *all_hit_clauses; UT_array *this_scan_hit_clauses; - UT_array *all_hit_groups; + // UT_array *all_hit_groups; }; UT_icd ut_literal_id_icd = {sizeof(struct maat_literal_id), NULL, NULL, NULL}; @@ -746,7 +742,7 @@ group2compile_item_new(const char *line, struct group2compile_schema *g2c_schema { size_t column_offset = 0; size_t column_len = 0; - char vtable_name[NAME_MAX] = {0}; + char vtable_name[MAX_NAME_STR_LEN] = {0}; struct group2compile_item *g2c_item = ALLOC(struct group2compile_item, 1); int ret = get_column_pos(line, g2c_schema->group_id_column, &column_offset, @@ -788,11 +784,11 @@ group2compile_item_new(const char *line, struct group2compile_schema *g2c_schema goto error; } - if (column_len > NAME_MAX) { + if (column_len > MAX_NAME_STR_LEN) { log_error(logger, MODULE_COMPILE, "[%s:%d] g2c table:<%s> virtual_table_name length exceed " "maxium:%d in line:%s", __FUNCTION__, __LINE__, table_name, - NAME_MAX, line); + MAX_NAME_STR_LEN, line); goto error; } @@ -1127,14 +1123,14 @@ static size_t compile_state_if_new_hit_compile(struct maat_compile_state *compil } size_t maat_compile_bool_matcher_match(struct compile_runtime *compile_rt, int is_last_scan, - struct maat_compile_state *compile_state, + struct maat_compile_state *compile_state, int thread_id, void **user_data_array, size_t ud_array_size) { size_t ud_result_cnt = 0; struct maat_compile *compile = NULL; - struct bool_expr_match *expr_match = compile_rt->expr_match_buff + - (compile_state->thread_id * MAX_SCANNER_HIT_COMPILE_NUM); - assert(compile_state->thread_id >= 0); + struct bool_expr_match *expr_match = compile_rt->expr_match_buff + + (thread_id * MAX_SCANNER_HIT_COMPILE_NUM); + assert(thread_id >= 0); if (0 == compile_state->compile_rt_version) { compile_state->compile_rt_version = compile_rt->version; @@ -1142,7 +1138,7 @@ size_t maat_compile_bool_matcher_match(struct compile_runtime *compile_rt, int i if (NULL == compile_rt->bm || 0 == utarray_len(compile_state->all_hit_clauses) || compile_state->compile_rt_version != compile_rt->version) { - compile_state->this_scan_hit_item_cnt = 0; + compile_state->this_scan_hit_item_flag = 0; return 0; } @@ -1168,11 +1164,11 @@ size_t maat_compile_bool_matcher_match(struct compile_runtime *compile_rt, int i } size_t n_new_hit_compile = compile_state_if_new_hit_compile(compile_state, compile); - size_t n_this_scan_hit_item = compile_state->this_scan_hit_item_cnt; + int this_scan_hit_item_flag = compile_state->this_scan_hit_item_flag; if ((compile->not_clause_cnt > 0) && (LAST_SCAN_UNSET == is_last_scan)) { - compile_state->not_clause_hitted_flag = 1; + compile_state->not_clause_hit_flag = 1; } else if (compile->user_data) { - if (n_new_hit_compile > 0 || 0 == n_this_scan_hit_item) { + if (n_new_hit_compile > 0 || 0 == this_scan_hit_item_flag) { /* compile hit because of new item or hit a compile that refer a NOT-logic group in previous scan */ user_data_array[ud_result_cnt] = compile->user_data; @@ -1181,7 +1177,7 @@ size_t maat_compile_bool_matcher_match(struct compile_runtime *compile_rt, int i } } - compile_state->this_scan_hit_item_cnt = 0; + compile_state->this_scan_hit_item_flag = 0; return ud_result_cnt; } @@ -1455,15 +1451,13 @@ int maat_remove_group_from_compile(struct rcu_hash_table *hash_tbl, return ret; } -struct maat_compile_state *maat_compile_state_new(int thread_id) +struct maat_compile_state *maat_compile_state_new(void) { struct maat_compile_state *compile_state = ALLOC(struct maat_compile_state, 1); - compile_state->thread_id = thread_id; utarray_new(compile_state->internal_hit_paths, &ut_hit_path_icd); utarray_new(compile_state->all_hit_clauses, &ut_clause_id_icd); utarray_new(compile_state->this_scan_hit_clauses, &ut_clause_id_icd); - utarray_new(compile_state->all_hit_groups, &ut_hit_group_icd); return compile_state; } @@ -1476,14 +1470,12 @@ void maat_compile_state_reset(struct maat_compile_state *compile_state) compile_state->Nth_scan = 0; compile_state->compile_rt_version = 0; - compile_state->this_scan_hit_item_cnt = 0; - compile_state->not_clause_hitted_flag = 0; - compile_state->hit_path_cnt = 0; + compile_state->this_scan_hit_item_flag = 0; + compile_state->not_clause_hit_flag = 0; utarray_clear(compile_state->internal_hit_paths); utarray_clear(compile_state->all_hit_clauses); utarray_clear(compile_state->this_scan_hit_clauses); - utarray_clear(compile_state->all_hit_groups); } void maat_compile_state_free(struct maat_compile_state *compile_state) @@ -1506,11 +1498,6 @@ void maat_compile_state_free(struct maat_compile_state *compile_state) utarray_free(compile_state->this_scan_hit_clauses); compile_state->this_scan_hit_clauses = NULL; } - - if (compile_state->all_hit_groups != NULL) { - utarray_free(compile_state->all_hit_groups); - compile_state->all_hit_groups = NULL; - } FREE(compile_state); } @@ -1569,7 +1556,7 @@ static int maat_compile_is_hit_path_existed(const struct maat_hit_path *hit_path return 0; } -size_t compile_runtime_get_hit_paths(struct compile_runtime *compile_rt, +size_t compile_runtime_get_hit_paths(struct compile_runtime *compile_rt, int thread_id, struct maat_compile_state *compile_state, struct maat_hit_path *hit_path_array, size_t array_size, size_t n_internal_hit_path) @@ -1579,8 +1566,8 @@ size_t compile_runtime_get_hit_paths(struct compile_runtime *compile_rt, struct maat_compile *compile = NULL; struct maat_literal_id literal_id = {0, 0}; struct bool_expr_match *expr_match = compile_rt->expr_match_buff + - (compile_state->thread_id * MAX_SCANNER_HIT_COMPILE_NUM); - assert(compile_state->thread_id >= 0); + (thread_id * MAX_SCANNER_HIT_COMPILE_NUM); + assert(thread_id >= 0); if (compile_state->compile_rt_version != compile_rt->version) { return 0; @@ -1634,7 +1621,7 @@ void maat_compile_state_update_hit_path(struct maat_compile_state *compile_state int Nth_scan, int Nth_item_result) { if (compile_state->Nth_scan != Nth_scan) { - assert(compile_state->this_scan_hit_item_cnt == 0); + assert(compile_state->this_scan_hit_item_flag == 0); compile_state->Nth_scan = Nth_scan; utarray_clear(compile_state->this_scan_hit_clauses); } @@ -1642,8 +1629,7 @@ void maat_compile_state_update_hit_path(struct maat_compile_state *compile_state maat_compile_hit_path_add(compile_state->internal_hit_paths, item_id, group_id, vtable_id, Nth_scan, Nth_item_result); - compile_state->hit_path_cnt++; - compile_state->this_scan_hit_item_cnt++; + compile_state->this_scan_hit_item_flag = 1; } void maat_compile_state_update_hit_clause(struct maat_compile_state *compile_state, @@ -1686,25 +1672,9 @@ void maat_compile_state_update_hit_clause(struct maat_compile_state *compile_sta } } -void maat_compile_state_update_hit_group(struct maat_compile_state *compile_state, - long long group_id, int vtable_id) -{ - if (NULL == compile_state) { - return; - } - - struct maat_hit_group hit_group = {group_id, vtable_id}; - if (utarray_find(compile_state->all_hit_groups, &hit_group, compare_hit_group)) { - return; - } - - utarray_push_back(compile_state->all_hit_groups, &hit_group); - utarray_sort(compile_state->all_hit_groups, compare_hit_group); -} - int maat_compile_state_has_NOT_clause(struct maat_compile_state *compile_state) { - return compile_state->not_clause_hitted_flag; + return compile_state->not_clause_hit_flag; } void compile_runtime_ex_data_iterate(struct compile_runtime *compile_rt, @@ -2160,7 +2130,7 @@ int compile_runtime_match(struct compile_runtime *compile_rt, long long *compile // all hit clause_id -> compile_id size_t bool_match_ret = maat_compile_bool_matcher_match(compile_rt, is_last_scan, - compile_state, + compile_state, state->thread_id, (void **)compile_rules, compile_ids_size); if (bool_match_ret > 0) { @@ -2188,7 +2158,7 @@ void maat_compile_state_update(int vtable_id, struct maat_item *hit_items, struct maat *maat_instance = state->maat_instance; if (NULL == state->compile_state) { - state->compile_state = maat_compile_state_new(state->thread_id); + state->compile_state = maat_compile_state_new(); alignment_int64_array_add(maat_instance->stat->maat_compile_state_cnt, state->thread_id, 1); } @@ -2231,19 +2201,16 @@ void maat_compile_state_update(int vtable_id, struct maat_item *hit_items, for (int j = 0; j < super_group_cnt; j++) { maat_compile_state_update_hit_clause(state->compile_state, compile_rt, super_group_ids[j], vtable_id); - maat_compile_state_update_hit_group(state->compile_state, super_group_ids[j], - vtable_id); } for (int j = 0; j < hit_cnt; j++) { maat_compile_state_update_hit_clause(state->compile_state, compile_rt, hit_group_ids[j], vtable_id); - maat_compile_state_update_hit_group(state->compile_state, hit_group_ids[j], - vtable_id); } } size_t maat_compile_state_get_hit_groups(struct maat_compile_state *compile_state, + struct group2group_runtime *g2g_rt, struct maat_hit_group *hit_group_array, size_t array_size) { @@ -2252,14 +2219,39 @@ size_t maat_compile_state_get_hit_groups(struct maat_compile_state *compile_stat } size_t i = 0; - struct maat_hit_group *hit_group = NULL; + UT_array *all_hit_groups; + utarray_new(all_hit_groups, &ut_hit_group_icd); + struct maat_internal_hit_path *internal_path = NULL; - for (i = 0; i < utarray_len(compile_state->all_hit_groups) && i < array_size; i++) { - hit_group = (struct maat_hit_group *)utarray_eltptr(compile_state->all_hit_groups, i); - hit_group_array[i].group_id = hit_group->group_id; - hit_group_array[i].vtable_id = hit_group->vtable_id; + for (i = 0; i < utarray_len(compile_state->internal_hit_paths); i++) { + internal_path = (struct maat_internal_hit_path *)utarray_eltptr(compile_state->internal_hit_paths, i); + + long long super_group_ids[MAX_SCANNER_HIT_GROUP_NUM]; + size_t super_group_cnt = group2group_runtime_get_super_groups(g2g_rt, &(internal_path->group_id), 1, + super_group_ids, MAX_SCANNER_HIT_GROUP_NUM); + if (super_group_cnt + 1 <= MAX_SCANNER_HIT_GROUP_NUM) { + super_group_ids[super_group_cnt++] = internal_path->group_id; + } + + for (size_t idx = 0; idx < super_group_cnt; idx++) { + struct maat_hit_group hit_group; + hit_group.group_id = super_group_ids[idx]; + hit_group.vtable_id = internal_path->vtable_id; + if (utarray_find(all_hit_groups, &hit_group, compare_hit_group)) { + continue; + } + utarray_push_back(all_hit_groups, &hit_group); + utarray_sort(all_hit_groups, compare_hit_group); + } } + struct maat_hit_group *tmp = NULL; + for (i = 0; i < utarray_len(all_hit_groups) && i < array_size; i++) { + tmp = (struct maat_hit_group *)utarray_eltptr(all_hit_groups, i); + hit_group_array[i] = *tmp; + } + utarray_free(all_hit_groups); + return i; } diff --git a/src/maat_expr.c b/src/maat_expr.c index d405502..5cc557f 100644 --- a/src/maat_expr.c +++ b/src/maat_expr.c @@ -58,7 +58,6 @@ enum match_method { struct expr_item { long long item_id; long long group_id; - long long district_id; char keywords[MAX_KEYWORDS_STR]; enum expr_type expr_type; enum hs_match_mode match_mode; @@ -66,6 +65,7 @@ struct expr_item { int is_case_sensitive; void *user_data; void (*user_data_free)(void *data); + int district_id; }; struct expr_runtime { @@ -140,7 +140,7 @@ enum hs_match_mode int_to_match_mode(int match_method) return mode; } -long long expr_runtime_get_district_id(struct expr_runtime *expr_rt, const char *district) +int expr_runtime_get_district_id(struct expr_runtime *expr_rt, const char *district) { long long district_id = DISTRICT_ANY; @@ -158,7 +158,7 @@ long long expr_runtime_get_district_id(struct expr_runtime *expr_rt, const char } } - return district_id; + return (int)district_id; } int expr_runtime_set_scan_district(struct expr_runtime *expr_rt, const char *district, @@ -979,11 +979,11 @@ int expr_runtime_scan(struct expr_runtime *expr_rt, int thread_id, struct item_district *item_dist = NULL; struct expr_item *expr_item = NULL; size_t real_hit_item_cnt = 0; - long long district_id = state->district_id; + int district_id = state->district_id; for (size_t i = 0; i < n_hit_item; i++) { item_dist = (struct item_district *)(hit_results[i].user_tag); - long long tag_district_id = item_district_id(item_dist); + int tag_district_id = item_district_id(item_dist); if (tag_district_id == district_id || tag_district_id == DISTRICT_ANY) { long long item_id = hit_results[i].rule_id; expr_item = (struct expr_item *)rcu_hash_find(expr_rt->item_hash, diff --git a/src/maat_flag.c b/src/maat_flag.c index 2d96139..6ad6650 100644 --- a/src/maat_flag.c +++ b/src/maat_flag.c @@ -37,11 +37,11 @@ struct flag_schema { struct flag_item { long long item_id; long long group_id; - long long district_id; long long flag; long long flag_mask; void *user_data; void (*user_data_free)(void *data); + int district_id; }; struct flag_runtime { @@ -266,7 +266,7 @@ int flag_runtime_update_row(struct flag_runtime *flag_rt, char *key, size_t key_ return 0; } -long long flag_runtime_get_district_id(struct flag_runtime *flag_rt, const char *district) +int flag_runtime_get_district_id(struct flag_runtime *flag_rt, const char *district) { long long district_id = DISTRICT_ANY; @@ -284,7 +284,7 @@ long long flag_runtime_get_district_id(struct flag_runtime *flag_rt, const char } } - return district_id; + return (int)district_id; } int flag_runtime_set_scan_district(struct flag_runtime *flag_rt, const char *district, @@ -559,11 +559,11 @@ int flag_runtime_scan(struct flag_runtime *flag_rt, int thread_id, struct item_district *item_dist = NULL; struct flag_item *flag_item = NULL; size_t real_hit_item_cnt = 0; - long long district_id = state->district_id; + int district_id = state->district_id; for (int i = 0; i < n_hit_item; i++) { item_dist = (struct item_district *)(hit_results[i].user_tag); - long long tag_district_id = item_district_id(item_dist); + int tag_district_id = item_district_id(item_dist); if (tag_district_id == district_id || tag_district_id == DISTRICT_ANY) { long long item_id = hit_results[i].rule_id; flag_item = (struct flag_item *)rcu_hash_find(flag_rt->item_hash, diff --git a/src/maat_interval.c b/src/maat_interval.c index af62846..db635e4 100644 --- a/src/maat_interval.c +++ b/src/maat_interval.c @@ -34,11 +34,11 @@ struct interval_schema { struct interval_item { long long item_id; long long group_id; - long long district_id; int low_bound; int up_bound; void *user_data; void (*user_data_free)(void *data); + int district_id; }; struct interval_runtime { @@ -240,8 +240,8 @@ void interval_runtime_free(void *interval_runtime) FREE(interval_rt); } -long long interval_runtime_get_district_id(struct interval_runtime *interval_rt, - const char *district) +int interval_runtime_get_district_id(struct interval_runtime *interval_rt, + const char *district) { long long district_id = DISTRICT_ANY; @@ -259,7 +259,7 @@ long long interval_runtime_get_district_id(struct interval_runtime *interval_rt, } } - return district_id; + return (int)district_id; } int interval_runtime_set_scan_district(struct interval_runtime *interval_rt, @@ -270,8 +270,8 @@ int interval_runtime_set_scan_district(struct interval_runtime *interval_rt, return -1; } - return maat_kv_read_unNull(interval_rt->district_map, district, district_len, - district_id); + return maat_kv_read_unNull(interval_rt->district_map, district, + district_len, district_id); } struct interval_item * @@ -563,11 +563,11 @@ int interval_runtime_scan(struct interval_runtime *interval_rt, int thread_id, struct item_district *item_dist = NULL; struct interval_item *int_item = NULL; size_t real_hit_item_cnt = 0; - long long district_id = state->district_id; + int district_id = state->district_id; for (int i = 0; i < n_hit_item; i++) { item_dist = (struct item_district *)(hit_results[i].user_tag); - long long tag_district_id = item_district_id(item_dist); + int tag_district_id = item_district_id(item_dist); if (tag_district_id == district_id || tag_district_id == DISTRICT_ANY) { long long item_id = hit_results[i].rule_id; int_item = (struct interval_item *)rcu_hash_find(interval_rt->item_hash, diff --git a/src/maat_rule.c b/src/maat_rule.c index 3777af0..1164f57 100644 --- a/src/maat_rule.c +++ b/src/maat_rule.c @@ -33,16 +33,13 @@ #define MODULE_MAAT_RULE module_name_str("maat.rule") struct item_district { - long long magic_num; - long long district_id; + int district_id; }; -#define ITEM_RULE_MAGIC 0x4d3c2b1a struct item_district * -item_district_new(long long district_id) +item_district_new(int district_id) { struct item_district *item_dist = ALLOC(struct item_district, 1); - item_dist->magic_num = ITEM_RULE_MAGIC; item_dist->district_id = district_id; return item_dist; @@ -53,15 +50,11 @@ void item_district_free(void *item_district) if (NULL == item_district) { return; } - - struct item_district *item_dist = (struct item_district *)item_district; - assert(item_dist->magic_num == ITEM_RULE_MAGIC); - item_dist->magic_num = 0; - FREE(item_dist); + FREE(item_district); } -long long item_district_id(struct item_district *item_dist) +int item_district_id(struct item_district *item_dist) { return item_dist->district_id; } diff --git a/src/maat_table.c b/src/maat_table.c index 71167c1..d4fbaa6 100644 --- a/src/maat_table.c +++ b/src/maat_table.c @@ -32,7 +32,7 @@ struct maat_table { int table_id; - char table_name[NAME_MAX]; + char table_name[MAX_NAME_STR_LEN]; enum table_type table_type; int valid_column; void *schema;