From 1ded5b5d951f73462f9452423a27ef582a07ca69 Mon Sep 17 00:00:00 2001 From: jixinyi Date: Thu, 14 Feb 2019 15:06:36 +0800 Subject: 增加库表数据统计功能 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mctrl.cpp | 98 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 82 insertions(+), 16 deletions(-) (limited to 'src/mctrl.cpp') diff --git a/src/mctrl.cpp b/src/mctrl.cpp index e29ca5c..744f57a 100644 --- a/src/mctrl.cpp +++ b/src/mctrl.cpp @@ -3,12 +3,10 @@ #include #include #include +#include #include "MESA_prof_load.h" -#include "MESA_handle_logger.h" -#include "Maat_rule.h" -#include "Maat_command.h" #include "mctrl.h" -#include "MESA_htable.h" + struct mctrl_glocal_info mctrl_g; @@ -137,16 +135,19 @@ void del_ir_redis_info(int flag,const char* table_line,int rule_id) if(flag & INTERCEPT_FLAG) { del_ir_line(mctrl_g.i_feather,(char*)INTERCEPT_TABLE_NAME,table_line,rule_id); + mctrl_g.fs_status_num[INTERCEPT_ID]--; } if(flag & NOMINEE_FLAG) { del_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE_NAME,table_line,rule_id); + mctrl_g.fs_status_num[NOMINEE_ID]--; } if(flag & CANDIDATE_FLAG) { del_ir_line(mctrl_g.n_feather,(char*)CANDIDATE_TABLE_NAME,table_line,rule_id); + mctrl_g.fs_status_num[CANDIDATE_ID]--; } return; @@ -198,12 +199,15 @@ void table_id_change_name(int table_id,char **table_name) { case STATIC_NOMINEE_ID: *table_name=(char*)STATIC_NOMINEE_TABLE_NAME; + mctrl_g.fs_status_num[STATIC_NOMINEE_ID]--; break; case DYNAMIC_NOMINEE_ID: *table_name=(char*)DYNAMIC_NOMINEE_TABLE_NAME; + mctrl_g.fs_status_num[DYNAMIC_NOMINEE_ID]--; break; case DNAT_POLICY_ID: *table_name=(char*)DNAT_POLICY_TABLE_NAME; + mctrl_g.fs_status_num[DNAT_POLICY_ID]--; break; case NOMINEE_ID: *table_name=(char*)NOMINEE_TABLE_NAME; @@ -241,7 +245,19 @@ void static_dynamic_dpolicy_table_new_cb(int table_id, const char* key, const ch switch(table_id) { + case STATIC_NOMINEE_ID: + mctrl_g.fs_status_num[STATIC_NOMINEE_ID]++; + memcpy(mctrl_info.user_region,"0",sizeof("0")); + mctrl_info.htable_flag=STATIC_NOMINEE_FLAG; + sscanf(table_line,"%d\t%d\t%d\t%s\t%*s\t%s\t%*s\t%s\t%*s\t%s\t%*s\t%d\t%d\t%d\t%d\t%d\t%*d\t%*s\t%*s", + &mctrl_info.region_id,&mctrl_info.group_id,&mctrl_info.addr_type,mctrl_info.src_ip,mctrl_info.src_port, + mctrl_info.dst_ip,mctrl_info.dst_port,&mctrl_info.procotol,&mctrl_info.direction, + &mctrl_info.addr_pool_id,&mctrl_info.is_valid,&mctrl_info.action); + mctrl_info.region_id=(mctrl_info.region_id%DNAT_NUMBER)+DNAT_NUMBER; + table_name=(char*)STATIC_NOMINEE_TABLE_NAME; + break; case DYNAMIC_NOMINEE_ID: + mctrl_g.fs_status_num[DYNAMIC_NOMINEE_ID]++; mctrl_info.addr_pool_id=0; memcpy(mctrl_info.src_port,"0",sizeof("0")); memcpy(mctrl_info.dst_ip,"0.0.0.0",sizeof("0.0.0.0")); @@ -255,17 +271,8 @@ void static_dynamic_dpolicy_table_new_cb(int table_id, const char* key, const ch mctrl_info.group_id=mctrl_info.region_id; table_name=(char*)DYNAMIC_NOMINEE_TABLE_NAME; break; - case STATIC_NOMINEE_ID: - memcpy(mctrl_info.user_region,"0",sizeof("0")); - mctrl_info.htable_flag=STATIC_NOMINEE_FLAG; - sscanf(table_line,"%d\t%d\t%d\t%s\t%*s\t%s\t%*s\t%s\t%*s\t%s\t%*s\t%d\t%d\t%d\t%d\t%d\t%*d\t%*s\t%*s", - &mctrl_info.region_id,&mctrl_info.group_id,&mctrl_info.addr_type,mctrl_info.src_ip,mctrl_info.src_port, - mctrl_info.dst_ip,mctrl_info.dst_port,&mctrl_info.procotol,&mctrl_info.direction, - &mctrl_info.addr_pool_id,&mctrl_info.is_valid,&mctrl_info.action); - mctrl_info.region_id=(mctrl_info.region_id%DNAT_NUMBER)+DNAT_NUMBER; - table_name=(char*)STATIC_NOMINEE_TABLE_NAME; - break; case DNAT_POLICY_ID: + mctrl_g.fs_status_num[DNAT_POLICY_ID]++; memcpy(mctrl_info.src_ip,"0.0.0.0",sizeof("0.0.0.0")); memcpy(mctrl_info.src_port,"0",sizeof("0")); memcpy(mctrl_info.user_region,"0",sizeof("0")); @@ -389,6 +396,7 @@ long nominee_intercept_candidate_search_htable_cb(void *data, const uchar *key, if(!(htable_flag & INTERCEPT_FLAG)) { htable_flag+=INTERCEPT_FLAG; + mctrl_g.fs_status_num[INTERCEPT_ID]++; } table_name=(char*)INTERCEPT_TABLE_NAME; break; @@ -396,6 +404,7 @@ long nominee_intercept_candidate_search_htable_cb(void *data, const uchar *key, if(!(htable_flag & NOMINEE_FLAG)) { htable_flag+=NOMINEE_FLAG; + mctrl_g.fs_status_num[NOMINEE_ID]++; } table_name=(char*)NOMINEE_TABLE_NAME; break; @@ -403,6 +412,7 @@ long nominee_intercept_candidate_search_htable_cb(void *data, const uchar *key, if(!(htable_flag & CANDIDATE_FLAG)) { htable_flag+=CANDIDATE_FLAG; + mctrl_g.fs_status_num[CANDIDATE_ID]++; } table_name=(char*)CANDIDATE_TABLE_NAME; break; @@ -437,6 +447,7 @@ void nominee_intercept_candidate_table_new_cb(int table_id, const char* key, con if(*(int*)argp==NOMINEE_FLAG&&rule_id