From 88f7a17eb08c2494ba1b239291918449b842abc7 Mon Sep 17 00:00:00 2001 From: jixinyi Date: Mon, 21 Jan 2019 16:12:13 +0800 Subject: 调用maat新接口,完善说明文档 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ir_mctrl.cpp | 814 ------------------------------------------------------- 1 file changed, 814 deletions(-) delete mode 100644 src/ir_mctrl.cpp (limited to 'src/ir_mctrl.cpp') diff --git a/src/ir_mctrl.cpp b/src/ir_mctrl.cpp deleted file mode 100644 index 83f7820..0000000 --- a/src/ir_mctrl.cpp +++ /dev/null @@ -1,814 +0,0 @@ -#include -#include -#include -#include -#include -#include "MESA_prof_load.h" -#include "MESA_handle_logger.h" -#include "Maat_rule.h" -#include "Maat_command.h" -#include "ir_mctrl.h" -#include "MESA_htable.h" - -struct MCTRL_GLOCAL_INFO mctrl_g; - -void sta_dyn_policy_maat_start_cb(int update_type,void* u_para) -{ - if(update_type==MAAT_RULE_UPDATE_TYPE_FULL) - { - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"sta_dyn_policy_maat_start_cb", "table_id:%d,Maat rule type is full",*(int*)u_para); - switch(*(int*)u_para) - { - case DYNAMIC_NOMINEE_FLAG: - mctrl_g.update_type_d=MAAT_RULE_UPDATE_TYPE_FULL; - mctrl_g.version_d++; - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_DEBUG,(char*)"sta_dyn_policy_maat_start_cb", "table_id:%d,version:%d",*(int*)u_para,mctrl_g.version_d); - break; - case STATIC_NOMINEE_FLAG: - mctrl_g.update_type_s=MAAT_RULE_UPDATE_TYPE_FULL; - mctrl_g.version_s++; - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_DEBUG,(char*)"sta_dyn_policy_maat_start_cb", "table_id:%d,version:%d",*(int*)u_para,mctrl_g.version_s); - break; - case DNAT_POLICY_FLAG: - mctrl_g.update_type_dp=MAAT_RULE_UPDATE_TYPE_FULL; - mctrl_g.version_dp++; - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_DEBUG,(char*)"sta_dyn_policy_maat_start_cb", "table_id:%d,version:%d",*(int*)u_para,mctrl_g.version_dp); - break; - default: - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_DEBUG,(char*)"sta_dyn_policy_maat_start_cb", "maat_start_cb table id error!!!"); - assert(0); - break; - } - } - else - { - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"sta_dyn_policy_maat_start_cb", "table_id:%d,Maat rule type is inc",*(int*)u_para); - } - return; -} - - -void nominee_intercept_candidate_maat_start_cb(int update_type,void* u_para) -{ - if(update_type==MAAT_RULE_UPDATE_TYPE_FULL) - { - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"nominee_intercept_candidate_maat_start_cb", "table_id:%d,Maat rule type is full",*(int*)u_para); - } - else - { - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"nominee_intercept_candidate_maat_start_cb", "table_id:%d,Maat rule type is inc",*(int*)u_para); - } - return; -} - -void mctrl_get_cur_time(char *date) -{ - time_t t; - struct tm *lt; - time(&t); - lt = localtime(&t); - snprintf(date, MAX_TIME_LEN,"%d/%d/%d/%d:%d:%d",lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday, lt->tm_hour, lt->tm_min, lt->tm_sec); -} - - -int set_ir_line(Maat_feather_t feather,const char *ir_table_name,const char *table_line,int rule_id) -{ - const struct Maat_line_t *p_line; - struct Maat_line_t line_rule; - int ret = 0; - char m_table_line[HTABLE_DATA_LEN]; - struct IR_MCTRL_INFO mctrl_info; - memset(&mctrl_info,0,sizeof(mctrl_info)); - memset(&line_rule, 0,sizeof(line_rule)); - - line_rule.label_id=0; - line_rule.rule_id=rule_id; - line_rule.table_name=ir_table_name; - - sscanf(table_line, "%d\t%d\t%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\t%s", - &mctrl_info.htable_flag,&mctrl_info.version,&mctrl_info.region_id,&mctrl_info.group_id,&mctrl_info.addr_type, - mctrl_info.src_ip,mctrl_info.mask_src_ip,mctrl_info.src_port,mctrl_info.mask_src_port,mctrl_info.dst_ip,mctrl_info.mask_dst_ip, - mctrl_info.dst_port,mctrl_info.mask_dst_port,&mctrl_info.procotol,&mctrl_info.direction,&mctrl_info.addr_pool_id,&mctrl_info.is_valid, - &mctrl_info.action,&mctrl_info.service,mctrl_info.user_region,mctrl_info.effective_range,mctrl_info.op_time); - - mctrl_get_cur_time(mctrl_info.op_time); - - if(!memcmp(ir_table_name,NOMINEE_TABLE_NAME,strlen(NOMINEE_TABLE_NAME))) - { - snprintf(m_table_line,sizeof(m_table_line),"%d\t%d\t%d\t%s\t%d\t%s\t%s", - rule_id,mctrl_info.addr_pool_id,mctrl_info.addr_type,mctrl_info.src_ip,mctrl_info.is_valid,mctrl_info.effective_range,mctrl_info.op_time); - } - else - { - snprintf(m_table_line,sizeof(m_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%s\t%s\t%s", - rule_id,mctrl_info.group_id,mctrl_info.addr_type, - mctrl_info.src_ip,mctrl_info.mask_src_ip,mctrl_info.src_port,mctrl_info.mask_src_port,mctrl_info.dst_ip,mctrl_info.mask_dst_ip, - mctrl_info.dst_port,mctrl_info.mask_dst_port,mctrl_info.procotol,mctrl_info.direction, - mctrl_info.is_valid,mctrl_info.action,mctrl_info.service,mctrl_info.user_region,mctrl_info.effective_range,mctrl_info.op_time); - } - - line_rule.table_line=m_table_line; - line_rule.expire_after=0; - p_line=&line_rule; - - ret=Maat_cmd_set_line(feather, p_line, MAAT_OP_ADD); - - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"set_ir_line", "set_table_name:%s set_table_line:%s",ir_table_name,m_table_line); - - if(ret==-1) - { - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"set_ir_line","%s:set rule_id is %d redis line error",ir_table_name,rule_id); - } - else - { - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"set_ir_line","%s:set rule_id is %d redis line success",ir_table_name,rule_id); - } - return ret; -} - - -int del_ir_line(Maat_feather_t feather,const char *ir_table_name,const char *table_line,int rule_id) -{ - int ret=0; - - const struct Maat_line_t *p_line; - struct Maat_line_t line_rule; - memset(&line_rule,0,sizeof(line_rule)); - - line_rule.label_id=0; - line_rule.rule_id=rule_id; - line_rule.table_name=ir_table_name; - line_rule.table_line=NULL; - if(!memcmp(ir_table_name,INTERCEPT_TABLE_NAME,strlen(NOMINEE_TABLE_NAME))) - { - line_rule.expire_after=TIME_OUT; - p_line=&line_rule; - ret=Maat_cmd_set_line(feather, p_line, MAAT_OP_RENEW_TIMEOUT); - } - else - { - line_rule.expire_after=0; - p_line=&line_rule; - ret=Maat_cmd_set_line(feather, p_line, MAAT_OP_DEL); - } - - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"del_ir_line", "del_table_name:%s del_table_line:%s",ir_table_name,table_line); - - if(ret==-1) - { - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"del_ir_line","%s:del rule_id is %d redis line error",ir_table_name,rule_id); - } - else - { - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"del_ir_line","%s:del rule_id is %d redis line success",ir_table_name,rule_id); - } - return ret; - -} - -long del_update_search_htable_cb(void *data, const uchar *key, uint size, void *user_arg) -{ - int htable_flag=0; - char *htable_data=(char*)data; - if(htable_data!=NULL) - { - sscanf(htable_data,"%d\t",&htable_flag); - } - return htable_flag; -} - -long set_update_search_htable_cb(void *data, const uchar *key, uint size, void *user_arg) -{ - struct IR_MCTRL_INFO mctrl_info; - memset(&mctrl_info,0,sizeof(mctrl_info)); - char *htable_data=(char*)data; - - if(htable_data!=NULL) - { - sscanf(htable_data,"%d\t%d\t%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\t%s", - &mctrl_info.htable_flag,&mctrl_info.version,&mctrl_info.region_id,&mctrl_info.group_id,&mctrl_info.addr_type, - mctrl_info.src_ip,mctrl_info.mask_src_ip,mctrl_info.src_port,mctrl_info.mask_src_port,mctrl_info.dst_ip,mctrl_info.mask_dst_ip, - mctrl_info.dst_port,mctrl_info.mask_dst_port,&mctrl_info.procotol,&mctrl_info.direction,&mctrl_info.addr_pool_id,&mctrl_info.is_valid, - &mctrl_info.action,&mctrl_info.service,mctrl_info.user_region,mctrl_info.effective_range,mctrl_info.op_time); - - if(mctrl_info.htable_flag & DYNAMIC_NOMINEE_FLAG) - { - mctrl_info.version=mctrl_g.version_d; - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"set_update_search_htable_cb","get htable flag:%d! version:%d!",mctrl_info.htable_flag,mctrl_info.version); - } - else if(mctrl_info.htable_flag & STATIC_NOMINEE_FLAG) - { - mctrl_info.version=mctrl_g.version_s; - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"set_update_search_htable_cb","get htable flag:%d! version:%d!",mctrl_info.htable_flag,mctrl_info.version); - } - else if(mctrl_info.htable_flag & DNAT_POLICY_FLAG) - { - mctrl_info.version=mctrl_g.version_dp; - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"set_update_search_htable_cb","get htable flag:%d! version:%d!",mctrl_info.htable_flag,mctrl_info.version); - } - else - { - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"set_update_search_htable_cb","get htable flag:%d!",mctrl_info.htable_flag); - } - - snprintf(htable_data,HTABLE_DATA_LEN, "%d\t%d\t%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\t%s", - mctrl_info.htable_flag,mctrl_info.version,mctrl_info.region_id,mctrl_info.group_id,mctrl_info.addr_type, - mctrl_info.src_ip,mctrl_info.mask_src_ip,mctrl_info.src_port,mctrl_info.mask_src_port,mctrl_info.dst_ip,mctrl_info.mask_dst_ip, - mctrl_info.dst_port,mctrl_info.mask_dst_port,mctrl_info.procotol,mctrl_info.direction,mctrl_info.addr_pool_id,mctrl_info.is_valid, - mctrl_info.action,mctrl_info.service,mctrl_info.user_region,mctrl_info.effective_range,mctrl_info.op_time); - } - return mctrl_info.htable_flag; -} - - -long nominee_intercept_candidate_search_htable_cb(void *data, const uchar *key, uint size, void *user_arg) -{ - int htable_flag=0; - struct IR_MCTRL_INFO mctrl_info; - memset(&mctrl_info,0,sizeof(mctrl_info)); - char *htable_data=(char*)data; - - if(htable_data==NULL) - { - return htable_flag; - } - - sscanf(htable_data, "%d\t%d\t%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\t%s", - &htable_flag,&mctrl_info.version,&mctrl_info.region_id,&mctrl_info.group_id,&mctrl_info.addr_type, - mctrl_info.src_ip,mctrl_info.mask_src_ip,mctrl_info.src_port,mctrl_info.mask_src_port,mctrl_info.dst_ip,mctrl_info.mask_dst_ip, - mctrl_info.dst_port,mctrl_info.mask_dst_port,&mctrl_info.procotol,&mctrl_info.direction,&mctrl_info.addr_pool_id,&mctrl_info.is_valid, - &mctrl_info.action,&mctrl_info.service,mctrl_info.user_region,mctrl_info.effective_range,mctrl_info.op_time); - - switch(*(int*)user_arg) - { - case INTERCEPT_FLAG: - if(!(htable_flag & INTERCEPT_FLAG)) - { - htable_flag+=INTERCEPT_FLAG; - } - break; - case NOMINEE_FLAG: - if(!(htable_flag & NOMINEE_FLAG)) - { - htable_flag+=NOMINEE_FLAG; - } - break; - case CANDIDATE_FLAG: - if(!(htable_flag & CANDIDATE_FLAG)) - { - htable_flag+=CANDIDATE_FLAG; - } - break; - default: - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"nominee_intercept_candidate_search_htable_cb","read nom_intercept_candidate_table error!!!"); - assert(0); - break; - } - - snprintf(htable_data,HTABLE_DATA_LEN, "%d\t%d\t%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\t%s", - htable_flag,mctrl_info.version,mctrl_info.region_id,mctrl_info.group_id,mctrl_info.addr_type, - mctrl_info.src_ip,mctrl_info.mask_src_ip,mctrl_info.src_port,mctrl_info.mask_src_port,mctrl_info.dst_ip,mctrl_info.mask_dst_ip, - mctrl_info.dst_port,mctrl_info.mask_dst_port,mctrl_info.procotol,mctrl_info.direction,mctrl_info.addr_pool_id,mctrl_info.is_valid, - mctrl_info.action,mctrl_info.service,mctrl_info.user_region,mctrl_info.effective_range,mctrl_info.op_time); - - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"nominee_intercept_candidate_search_htable_cb","Data rule id is:%d htable flag is:%d",mctrl_info.region_id, htable_flag); - - return htable_flag; -} - -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); - } - - if(flag & NOMINEE_FLAG) - { - del_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE_NAME,table_line,rule_id); - } - - if(flag & CANDIDATE_FLAG) - { - del_ir_line(mctrl_g.n_feather,(char*)CANDIDATE_TABLE_NAME,table_line,rule_id); - } - - return; -} - -void nominee_intercept_candidate_maat_update_cb(int table_id,const char* table_line,void* u_para) -{ - int rule_id=0; - void *htable_data=NULL; - int is_valid=-1; - long search_ret=0; - - switch(*(int*)u_para) - { - case NOMINEE_FLAG: - sscanf(table_line,"%d\t%*d\t%*d\t%*s\t%d",&rule_id,&is_valid); - if(rule_id