diff options
| -rw-r--r-- | src/ir_mctrl.cpp | 495 | ||||
| -rw-r--r-- | src/ir_mctrl.h | 45 |
2 files changed, 250 insertions, 290 deletions
diff --git a/src/ir_mctrl.cpp b/src/ir_mctrl.cpp index 3663216..050f941 100644 --- a/src/ir_mctrl.cpp +++ b/src/ir_mctrl.cpp @@ -16,29 +16,33 @@ void s_d_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*)"maat_rule_type", "table_name:%s,Maat rule type is full",u_para); - if(!memcmp(u_para,DYNAMIC_NOMINEE_TABLE,strlen(DYNAMIC_NOMINEE_TABLE))) + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_rule_type", "table_name:%d,Maat rule type is full",*(int*)u_para); + switch(*(int*)u_para) { - mctrl_g.update_type_d=MAAT_RULE_UPDATE_TYPE_FULL; - mctrl_g.version_d++; - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_rule_type", "table_name:%s,version:%d",u_para,mctrl_g.version_d); - } - else if(!memcmp(u_para,STATIC_NOMINEE_TABLE,strlen(STATIC_NOMINEE_TABLE))) - { - mctrl_g.update_type_s=MAAT_RULE_UPDATE_TYPE_FULL; - mctrl_g.version_s++; - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_rule_type", "table_name:%s,version:%d",u_para,mctrl_g.version_s); - } - else - { - mctrl_g.update_type_dp=MAAT_RULE_UPDATE_TYPE_FULL; - mctrl_g.version_dp++; - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_rule_type", "table_name:%s,version:%d",u_para,mctrl_g.version_dp); + 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_INFO,(char*)"maat_rule_type", "table_name:%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_INFO,(char*)"maat_rule_type", "table_name:%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_INFO,(char*)"maat_rule_type", "table_name:%d,version:%d",*(int*)u_para,mctrl_g.version_dp); + break; + default: + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_start_cb", "maat_start_cb table name error!!!"); + assert(0); + break; } } else { - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_rule_type", "table_name:%s,Maat rule type is inc",u_para); + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_rule_type", "table_name:%d,Maat rule type is inc",*(int*)u_para); } return; } @@ -48,16 +52,16 @@ void n_i_c_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*)"maat_rule_type", "table_name:%s,Maat rule type is full",u_para); + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_rule_type", "table_name:%d,Maat rule type is full",*(int*)u_para); } else { - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_rule_type", "table_name:%s,Maat rule type is inc",u_para); + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"maat_rule_type", "table_name:%d,Maat rule type is inc",*(int*)u_para); } return; } -void get_cur_time(char *date) +void mctrl_get_cur_time(char *date) { time_t t; struct tm *lt; @@ -81,15 +85,15 @@ int set_ir_line(Maat_feather_t feather,const char *ir_table_name,const char *tab 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%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", - &nom_info.htable_flag,&nom_info.nominee_type,&nom_info.version,&nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, + 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", + &nom_info.htable_flag,&nom_info.version,&nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, nom_info.dst_port,nom_info.mask_dst_port,&nom_info.procotol,&nom_info.direction,&nom_info.addr_pool_id,&nom_info.is_valid, &nom_info.action,&nom_info.service,nom_info.user_region,nom_info.effective_range,nom_info.op_time); - get_cur_time(nom_info.op_time); + mctrl_get_cur_time(nom_info.op_time); - if(!memcmp(ir_table_name,NOMINEE_TABLE,strlen(NOMINEE_TABLE))) + 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,nom_info.addr_pool_id,nom_info.addr_type,nom_info.src_ip,nom_info.is_valid,nom_info.effective_range,nom_info.op_time); @@ -135,33 +139,28 @@ int del_ir_line(Maat_feather_t feather,const char *ir_table_name,const char *tab 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,strlen(INTERCEPT_TABLE))) + if(!memcmp(ir_table_name,NOMINEE_TABLE_NAME,strlen(NOMINEE_TABLE_NAME))) { - line_rule.expire_after=TIME_OUT; + line_rule.expire_after=0; p_line=&line_rule; - ret=Maat_cmd_set_line(feather, p_line, MAAT_OP_RENEW_TIMEOUT); + ret=Maat_cmd_set_line(feather, p_line, MAAT_OP_DEL); } else { - line_rule.expire_after=0; + line_rule.expire_after=TIME_OUT; p_line=&line_rule; - ret=Maat_cmd_set_line(feather, p_line, MAAT_OP_DEL); + ret=Maat_cmd_set_line(feather, p_line, MAAT_OP_RENEW_TIMEOUT); } MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"maat_update", "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_LINE","%s:del redis line error",ir_table_name); } - else if(ret==1) - { - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"DEL_LINE","%s:del redis line success",ir_table_name); - } else { - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_INFO, (char*)"DEL_LINE","%s:del redis line not sure",ir_table_name); + MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"DEL_LINE","%s:del redis line success",ir_table_name); } return ret; @@ -185,23 +184,23 @@ long set_update_search_htable_cb(void *data, const uchar *key, uint size, void * if(htable_data!=NULL) { - sscanf(htable_data,"%d\t%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", - &nom_info.htable_flag,&nom_info.nominee_type,&nom_info.version,&nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, + 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", + &nom_info.htable_flag,&nom_info.version,&nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, nom_info.dst_port,nom_info.mask_dst_port,&nom_info.procotol,&nom_info.direction,&nom_info.addr_pool_id,&nom_info.is_valid, &nom_info.action,&nom_info.service,nom_info.user_region,nom_info.effective_range,nom_info.op_time); - if(nom_info.nominee_type==DYNAMIC_NOMINEE_INFO) + if(nom_info.htable_flag & DYNAMIC_NOMINEE_FLAG) { - nom_info.version=mctrl_g.version_d; + nom_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!",nom_info.htable_flag,nom_info.version); } - else if(nom_info.nominee_type==STATIC_NOMINEE_INFO) + else if(nom_info.htable_flag & STATIC_NOMINEE_FLAG) { - nom_info.version=mctrl_g.version_s; + nom_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!",nom_info.htable_flag,nom_info.version); } - else if(nom_info.nominee_type==DNAT_POLICY_INFO) + else if(nom_info.htable_flag & DNAT_POLICY_FLAG) { nom_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!",nom_info.htable_flag,nom_info.version); @@ -210,9 +209,9 @@ long set_update_search_htable_cb(void *data, const uchar *key, uint size, void * { MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"set_update_search_htable_cb","get htable flag:%d!",nom_info.htable_flag); } - - snprintf(htable_data,HTABLE_DATA_LEN, "%d\t%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", - nom_info.htable_flag,nom_info.nominee_type,nom_info.version,nom_info.region_id,nom_info.group_id,nom_info.addr_type, + + 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", + nom_info.htable_flag,nom_info.version,nom_info.region_id,nom_info.group_id,nom_info.addr_type, nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, nom_info.dst_port,nom_info.mask_dst_port,nom_info.procotol,nom_info.direction,nom_info.addr_pool_id,nom_info.is_valid, nom_info.action,nom_info.service,nom_info.user_region,nom_info.effective_range,nom_info.op_time); @@ -232,46 +231,74 @@ long n_i_c_update_search_htable_cb(void *data, const uchar *key, uint size, void struct IR_MCTRL_INFO nom_info; char *htable_data=(char*)data; - if(htable_data!=NULL) + if(htable_data==NULL) { - sscanf((char*)data, "%d\t%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,&nom_info.nominee_type,&nom_info.version,&nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, - nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, - nom_info.dst_port,nom_info.mask_dst_port,&nom_info.procotol,&nom_info.direction,&nom_info.addr_pool_id,&nom_info.is_valid, - &nom_info.action,&nom_info.service,nom_info.user_region,nom_info.effective_range,nom_info.op_time); - - if(!memcmp(user_arg,INTERCEPT_TABLE,strlen(INTERCEPT_TABLE))&&(htable_flag==S_OR_D_ORIGIN_FLAG||htable_flag==O_AND_C_FLAG|| - htable_flag==O_AND_N_FLAG||htable_flag==O_AND_C_AND_N_FLAG||htable_flag==D_POLICY_FLAG)) - { - htable_flag+=INTERCEPT_FLAG; - } - else if(!memcmp(user_arg,NOMINEE_TABLE,strlen(NOMINEE_TABLE))&&(htable_flag==S_OR_D_ORIGIN_FLAG||htable_flag==O_AND_C_FLAG|| - htable_flag==O_AND_I_FLAG||htable_flag==O_AND_C_AND_I_FLAG)) - { - htable_flag+=NOMINEE_FLAG; - } - else if(!memcmp(user_arg,CANDIDATE_TABLE,strlen(CANDIDATE_TABLE))&&(htable_flag==S_OR_D_ORIGIN_FLAG||htable_flag==O_AND_N_FLAG|| - htable_flag==O_AND_I_FLAG||htable_flag==O_AND_I_AND_N_FLAG)) - { - htable_flag+=CANDIDATE_FLAG; - } - else - { + return htable_flag; + } + + sscanf((char*)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,&nom_info.version,&nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, + nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, + nom_info.dst_port,nom_info.mask_dst_port,&nom_info.procotol,&nom_info.direction,&nom_info.addr_pool_id,&nom_info.is_valid, + &nom_info.action,&nom_info.service,nom_info.user_region,nom_info.effective_range,nom_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_DEBUG, (char*)"n_i_c_update_search_htable_cb","htable flag is:%d",htable_flag); - } - - snprintf(htable_data,HTABLE_DATA_LEN, "%d\t%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,nom_info.nominee_type,nom_info.version,nom_info.region_id,nom_info.group_id,nom_info.addr_type, - nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, - nom_info.dst_port,nom_info.mask_dst_port,nom_info.procotol,nom_info.direction,nom_info.addr_pool_id,nom_info.is_valid, - nom_info.action,nom_info.service,nom_info.user_region,nom_info.effective_range,nom_info.op_time); - - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"n_i_c_update_search_htable_cb","htable flag change:%d",htable_flag); + 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,nom_info.version,nom_info.region_id,nom_info.group_id,nom_info.addr_type, + nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, + nom_info.dst_port,nom_info.mask_dst_port,nom_info.procotol,nom_info.direction,nom_info.addr_pool_id,nom_info.is_valid, + nom_info.action,nom_info.service,nom_info.user_region,nom_info.effective_range,nom_info.op_time); + + MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"n_i_c_update_search_htable_cb","htable flag change:%d",htable_flag); + + return htable_flag; } +void del_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 n_i_c_table_update_cb(int table_id,const char* table_line,void* u_para) { @@ -280,24 +307,32 @@ void n_i_c_table_update_cb(int table_id,const char* table_line,void* u_para) int is_valid=-1; long search_ret=0; - if(!memcmp(u_para,INTERCEPT_TABLE,strlen(INTERCEPT_TABLE))) - { - 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",&rule_id,&is_valid); - } - else if(!memcmp(u_para,NOMINEE_TABLE,strlen(NOMINEE_TABLE))) + switch(*(int*)u_para) { - sscanf(table_line,"%d\t%*d\t%*d\t%*s\t%d",&rule_id,&is_valid); - } - else - { - sscanf(table_line,"%d\t%*d\t%*d\t%*s\t%*d\t%d",&rule_id,&is_valid); + case NOMINEE_FLAG: + sscanf(table_line,"%d\t%*d\t%*d\t%*s\t%d",&rule_id,&is_valid); + if(rule_id<DNAT_NUMBER) + { + del_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE_NAME,table_line,rule_id); + } + break; + case INTERCEPT_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",&rule_id,&is_valid); + break; + case CANDIDATE_FLAG: + sscanf(table_line,"%d\t%*d\t%*d\t%*s\t%*d\t%d",&rule_id,&is_valid); + break; + default: + MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"READ_TABLE_UPDATA","read n_i_c_table error!!!"); + assert(0); + break; } unsigned char *key_id=(unsigned char*)&rule_id; if(is_valid==0) { - MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"READ_TABLE_UPDATA"," del table_name:%s,data:%s is_valid==0,del succeed",u_para,table_line); + MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"READ_TABLE_UPDATA"," del table_name:%d,data:%s is_valid==0,del succeed",*(int*)u_para,table_line); return; } @@ -305,14 +340,7 @@ void n_i_c_table_update_cb(int table_id,const char* table_line,void* u_para) if(htable_data==NULL) { - if(!memcmp(u_para,INTERCEPT_TABLE,strlen(INTERCEPT_TABLE))) - { - del_ir_line(mctrl_g.i_feather,(char*)u_para,table_line,rule_id); - } - else - { - del_ir_line(mctrl_g.n_feather,(char*)u_para,table_line,rule_id); - } + del_redis_info(*(int*)u_para,table_line,rule_id); } else { @@ -332,68 +360,18 @@ void htable_data_free(void *data) return; } -void del_redis_info(int flag,const char* table_line,int rule_id) +void set_redis_info(int flag,const char* table_line,int rule_id) { - switch(flag) + if(!(flag & INTERCEPT_FLAG)) { - case ALL_EXIST_FLAG: - del_ir_line(mctrl_g.i_feather,(char*)INTERCEPT_TABLE,table_line,rule_id); - del_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE,table_line,rule_id); - del_ir_line(mctrl_g.n_feather,(char*)CANDIDATE_TABLE,table_line,rule_id); - break; - case O_AND_I_AND_N_FLAG: - del_ir_line(mctrl_g.i_feather,(char*)INTERCEPT_TABLE,table_line,rule_id); - del_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE,table_line,rule_id); - break; - case O_AND_C_AND_I_FLAG: - del_ir_line(mctrl_g.i_feather,(char*)INTERCEPT_TABLE,table_line,rule_id); - del_ir_line(mctrl_g.n_feather,(char*)CANDIDATE_TABLE,table_line,rule_id); - break; - case O_AND_C_AND_N_FLAG: - del_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE,table_line,rule_id); - del_ir_line(mctrl_g.n_feather,(char*)CANDIDATE_TABLE,table_line,rule_id); - break; - case O_AND_I_FLAG: - case DP_AND_I_FLAG: - del_ir_line(mctrl_g.i_feather,(char*)INTERCEPT_TABLE,table_line,rule_id); - break; - case O_AND_C_FLAG: - del_ir_line(mctrl_g.n_feather,(char*)CANDIDATE_TABLE,table_line,rule_id); - break; - case O_AND_N_FLAG: - del_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE,table_line,rule_id); - break; - default: - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"del_update", "already del! htable_flag is:%d",flag); - break; + set_ir_line(mctrl_g.i_feather, (char*)INTERCEPT_TABLE_NAME,table_line,rule_id); } - return; -} -void set_redis_info(int flag,const char* table_line,int rule_id) -{ - switch(flag) + if((!(flag & NOMINEE_FLAG))&&(!(flag & DNAT_POLICY_FLAG))) { - case S_OR_D_ORIGIN_FLAG: - case O_AND_C_FLAG: - set_ir_line(mctrl_g.i_feather, (char*)INTERCEPT_TABLE,table_line,rule_id); - set_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE,table_line,rule_id); - break; - case O_AND_N_FLAG: - case O_AND_C_AND_N_FLAG: - case D_POLICY_FLAG: - set_ir_line(mctrl_g.i_feather, (char*)INTERCEPT_TABLE,table_line,rule_id); - break; - case O_AND_I_FLAG: - case O_AND_C_AND_I_FLAG: - set_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE,table_line,rule_id); - break; - default: - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"write_update", "exist already ! htable_flag is:%d",flag); - assert(flag<=ALL_EXIST_FLAG); - assert(flag>=D_POLICY_FLAG); - break; + set_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE_NAME,table_line,rule_id); } + return; } @@ -407,65 +385,62 @@ void s_d_table_update_cb(int table_id,const char* table_line,void* u_para) int rule_id=0; int del_ret=0; long cb_ret=0; - - if(!memcmp(u_para,DYNAMIC_NOMINEE_TABLE,strlen(DYNAMIC_NOMINEE_TABLE))) - { - sscanf(table_line,"%d\t%d\t%d\t%s\t%s\t%d\t%s\t%*d\t%d\t%d\t%*d\t%s\t%s", - &nom_info.region_id,&nom_info.addr_type,&nom_info.procotol,nom_info.src_ip,nom_info.src_port, - &nom_info.direction,nom_info.user_region,&nom_info.is_valid,&nom_info.service,nom_info.effective_range,nom_info.op_time); - - nom_info.region_id=(nom_info.region_id%1000000000)+1000000000; - nom_info.addr_pool_id=0; - nom_info.group_id=nom_info.region_id; - memcpy(nom_info.src_port,"0",sizeof("0")); - memcpy(nom_info.mask_src_ip,"0.0.0.0",sizeof("0.0.0.0")); - memcpy(nom_info.mask_src_port,"0",sizeof("0")); - memcpy(nom_info.dst_ip,"0.0.0.0",sizeof("0.0.0.0")); - memcpy(nom_info.mask_dst_ip,"0.0.0.0",sizeof("0.0.0.0")); - memcpy(nom_info.dst_port,"0",sizeof("0")); - memcpy(nom_info.mask_dst_port,"0",sizeof("0")); - memcpy(nom_info.effective_range,"{}",sizeof("{}")); - nom_info.action=96; - nom_info.service=832; - nom_info.htable_flag=S_OR_D_ORIGIN_FLAG; - nom_info.nominee_type=DYNAMIC_NOMINEE_INFO; - - } - else if(!memcmp(u_para,STATIC_NOMINEE_TABLE,strlen(STATIC_NOMINEE_TABLE))) - { - 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", - &nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, - nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, - nom_info.dst_port,nom_info.mask_dst_port,&nom_info.procotol,&nom_info.direction,&nom_info.addr_pool_id,&nom_info.is_valid, - &nom_info.action,&nom_info.service,nom_info.effective_range,nom_info.op_time); - nom_info.region_id=(nom_info.region_id%500000000)+500000000; - memcpy(nom_info.user_region,"0",sizeof("0")); - memcpy(nom_info.effective_range,"{}",sizeof("{}")); - nom_info.service=832; - nom_info.htable_flag=S_OR_D_ORIGIN_FLAG; - nom_info.nominee_type=STATIC_NOMINEE_INFO; - } - else - { - sscanf(table_line,"%d\t%d\t%s\t%s\t%d\t%*s\t%*s\t%d\t%d\t%d\t%d\t%s\t%s", - &nom_info.region_id,&nom_info.addr_type,nom_info.dst_ip,nom_info.dst_port,&nom_info.procotol, - &nom_info.do_log,&nom_info.action,&nom_info.service,&nom_info.is_valid, - nom_info.effective_range,nom_info.op_time); - nom_info.group_id=nom_info.region_id; - memcpy(nom_info.src_ip,"0.0.0.0",sizeof("0.0.0.0")); - memcpy(nom_info.src_port,"0",sizeof("0")); - memcpy(nom_info.mask_src_ip,"0.0.0.0",sizeof("0.0.0.0")); - memcpy(nom_info.mask_src_port,"0",sizeof("0")); - memcpy(nom_info.mask_dst_ip,"0.0.0.0",sizeof("0.0.0.0")); - memcpy(nom_info.mask_dst_port,"0",sizeof("0")); - memcpy(nom_info.user_region,"0",sizeof("0")); - memcpy(nom_info.effective_range,"{}",sizeof("{}")); - nom_info.region_id=nom_info.region_id%500000000; - nom_info.direction=0; - nom_info.action=96; - nom_info.service=832; - nom_info.htable_flag=D_POLICY_FLAG; - nom_info.nominee_type=DNAT_POLICY_INFO; + switch(*(int*)u_para) + { + case DYNAMIC_NOMINEE_FLAG: + nom_info.addr_pool_id=0; + nom_info.group_id=nom_info.region_id; + memcpy(nom_info.src_port,"0",sizeof("0")); + memcpy(nom_info.mask_src_ip,"0.0.0.0",sizeof("0.0.0.0")); + memcpy(nom_info.mask_src_port,"0",sizeof("0")); + memcpy(nom_info.dst_ip,"0.0.0.0",sizeof("0.0.0.0")); + memcpy(nom_info.mask_dst_ip,"0.0.0.0",sizeof("0.0.0.0")); + memcpy(nom_info.dst_port,"0",sizeof("0")); + memcpy(nom_info.mask_dst_port,"0",sizeof("0")); + memcpy(nom_info.effective_range,"{}",sizeof("{}")); + nom_info.action=96; + nom_info.service=832; + nom_info.htable_flag=DYNAMIC_NOMINEE_FLAG; + sscanf(table_line,"%d\t%d\t%d\t%s\t%*s\t%d\t%s\t%*d\t%d\t%d\t%*d\t%*s\t%*s", + &nom_info.region_id,&nom_info.addr_type,&nom_info.procotol,nom_info.src_ip, + &nom_info.direction,nom_info.user_region,&nom_info.is_valid,&nom_info.service); + nom_info.region_id=(nom_info.region_id%SNAT_DYNAMIC_NUMBER)+SNAT_DYNAMIC_NUMBER; + break; + case STATIC_NOMINEE_FLAG: + memcpy(nom_info.user_region,"0",sizeof("0")); + memcpy(nom_info.effective_range,"{}",sizeof("{}")); + nom_info.service=832; + nom_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", + &nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, + nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, + nom_info.dst_port,nom_info.mask_dst_port,&nom_info.procotol,&nom_info.direction,&nom_info.addr_pool_id,&nom_info.is_valid, + &nom_info.action); + nom_info.region_id=(nom_info.region_id%DNAT_NUMBER)+DNAT_NUMBER; + break; + case DNAT_POLICY_FLAG: + memcpy(nom_info.src_ip,"0.0.0.0",sizeof("0.0.0.0")); + memcpy(nom_info.src_port,"0",sizeof("0")); + memcpy(nom_info.mask_src_ip,"0.0.0.0",sizeof("0.0.0.0")); + memcpy(nom_info.mask_src_port,"0",sizeof("0")); + memcpy(nom_info.mask_dst_ip,"0.0.0.0",sizeof("0.0.0.0")); + memcpy(nom_info.mask_dst_port,"0",sizeof("0")); + memcpy(nom_info.user_region,"0",sizeof("0")); + memcpy(nom_info.effective_range,"{}",sizeof("{}")); + nom_info.direction=0; + nom_info.action=96; + nom_info.service=832; + nom_info.htable_flag=DNAT_POLICY_FLAG; + sscanf(table_line,"%d\t%d\t%s\t%s\t%d\t%*s\t%*s\t%d\t%*d\t%*d\t%d\t%*s\t%*s", + &nom_info.region_id,&nom_info.addr_type,nom_info.dst_ip,nom_info.dst_port,&nom_info.procotol, + &nom_info.do_log,&nom_info.is_valid); + nom_info.group_id=nom_info.region_id; + nom_info.region_id=nom_info.region_id%DNAT_NUMBER; + break; + default: + MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"read_snat_dnat","read_snat_or_dnat table error!!"); + assert(0); + break; } unsigned char *key_id=(unsigned char*)&nom_info.region_id; @@ -474,8 +449,8 @@ void s_d_table_update_cb(int table_id,const char* table_line,void* u_para) if(nom_info.is_valid==1) { htable_data=(char*)malloc(HTABLE_DATA_LEN); - snprintf(htable_data,HTABLE_DATA_LEN,"%d\t%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", - nom_info.htable_flag,nom_info.nominee_type,nom_info.version,nom_info.region_id,nom_info.group_id,nom_info.addr_type, + 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", + nom_info.htable_flag,nom_info.version,nom_info.region_id,nom_info.group_id,nom_info.addr_type, nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, nom_info.dst_port,nom_info.mask_dst_port,nom_info.procotol,nom_info.direction,nom_info.addr_pool_id,nom_info.is_valid, nom_info.action,nom_info.service,nom_info.user_region,nom_info.effective_range,nom_info.op_time); @@ -537,14 +512,14 @@ void s_d_htable_full_iterate(const uchar * key, uint size, void * data, void * u return; } - sscanf(htable_data, "%d\t%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", - &nom_info.htable_flag,&nom_info.nominee_type,&nom_info.version,&nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, + 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", + &nom_info.htable_flag,&nom_info.version,&nom_info.region_id,&nom_info.group_id,&nom_info.addr_type, nom_info.src_ip,nom_info.mask_src_ip,nom_info.src_port,nom_info.mask_src_port,nom_info.dst_ip,nom_info.mask_dst_ip, nom_info.dst_port,nom_info.mask_dst_port,&nom_info.procotol,&nom_info.direction,&nom_info.addr_pool_id,&nom_info.is_valid, &nom_info.action,&nom_info.service,nom_info.user_region,nom_info.effective_range,nom_info.op_time); - if((mctrl_g.update_type_s==MAAT_RULE_UPDATE_TYPE_FULL&&nom_info.nominee_type==STATIC_NOMINEE_INFO&&nom_info.version!=mctrl_g.version_s)|| - (mctrl_g.update_type_d==MAAT_RULE_UPDATE_TYPE_FULL&&nom_info.nominee_type==DYNAMIC_NOMINEE_INFO&&nom_info.version!=mctrl_g.version_d)|| - (mctrl_g.update_type_dp==MAAT_RULE_UPDATE_TYPE_FULL&&nom_info.nominee_type==DNAT_POLICY_INFO&&nom_info.version!=mctrl_g.version_dp)) + if((mctrl_g.update_type_s==MAAT_RULE_UPDATE_TYPE_FULL&&(nom_info.htable_flag & STATIC_NOMINEE_FLAG)&&nom_info.version!=mctrl_g.version_s)|| + (mctrl_g.update_type_d==MAAT_RULE_UPDATE_TYPE_FULL&&(nom_info.htable_flag & DYNAMIC_NOMINEE_FLAG)&&nom_info.version!=mctrl_g.version_d)|| + (mctrl_g.update_type_dp==MAAT_RULE_UPDATE_TYPE_FULL&&(nom_info.htable_flag & DNAT_POLICY_FLAG)&&nom_info.version!=mctrl_g.version_dp)) { del_redis_info(nom_info.htable_flag,(char*)data,nom_info.region_id); @@ -564,28 +539,28 @@ void s_d_htable_full_iterate(const uchar * key, uint size, void * data, void * u void s_d_finish_cb(void* u_para) { - if((!memcmp(u_para,DYNAMIC_NOMINEE_TABLE,strlen(DYNAMIC_NOMINEE_TABLE)))&&mctrl_g.update_type_d==MAAT_RULE_UPDATE_TYPE_FULL) + if((*(int*)u_para==DYNAMIC_NOMINEE_FLAG)&&mctrl_g.update_type_d==MAAT_RULE_UPDATE_TYPE_FULL) { MESA_htable_iterate(mctrl_g.s_d_htable, s_d_htable_full_iterate,NULL); mctrl_g.update_type_d=MAAT_RULE_UPDATE_TYPE_INC; - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%s,update_type:%d,finish succeed",u_para,mctrl_g.update_type_d); + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%d,update_type:%d,finish succeed",*(int*)u_para,mctrl_g.update_type_d); } - else if((!memcmp(u_para,STATIC_NOMINEE_TABLE,strlen(STATIC_NOMINEE_TABLE)))&&mctrl_g.update_type_s==MAAT_RULE_UPDATE_TYPE_FULL) + else if((*(int*)u_para==STATIC_NOMINEE_FLAG)&&mctrl_g.update_type_s==MAAT_RULE_UPDATE_TYPE_FULL) { MESA_htable_iterate(mctrl_g.s_d_htable, s_d_htable_full_iterate,NULL); mctrl_g.update_type_s=MAAT_RULE_UPDATE_TYPE_INC; - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%s,update_type:%d,finish succeed",u_para,mctrl_g.update_type_s); + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%d,update_type:%d,finish succeed",*(int*)u_para,mctrl_g.update_type_s); } - else if((!memcmp(u_para,DNAT_POLICY_TABLE,strlen(DNAT_POLICY_TABLE)))&&mctrl_g.update_type_dp==MAAT_RULE_UPDATE_TYPE_FULL) + else if((*(int*)u_para==DNAT_POLICY_FLAG)&&mctrl_g.update_type_dp==MAAT_RULE_UPDATE_TYPE_FULL) { MESA_htable_iterate(mctrl_g.s_d_htable, s_d_htable_full_iterate,NULL); mctrl_g.update_type_dp=MAAT_RULE_UPDATE_TYPE_INC; - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%s,update_type:%d,finish succeed",u_para,mctrl_g.update_type_dp); + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%d,update_type:%d,finish succeed",*(int*)u_para,mctrl_g.update_type_dp); } else { - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%s,finish succeed",u_para); + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%d,finish succeed",*(int*)u_para); } return; } @@ -593,7 +568,7 @@ void s_d_finish_cb(void* u_para) void n_i_c_finish_cb(void* u_para) { - MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%s,finish succeed",u_para); + MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"maat_finish", "table_name:%d,finish succeed",*(int*)u_para); return; } @@ -625,7 +600,7 @@ void htable_iterate(const uchar * key, uint size, void * data, void * user) int rule_id=0; char *table_line=(char*)data; - sscanf(table_line,"%d\t%*d\t%*d\t%d",&htable_flag,&rule_id); + sscanf(table_line,"%d\t%*d\t%d",&htable_flag,&rule_id); set_redis_info(htable_flag,table_line,rule_id); @@ -705,23 +680,23 @@ void Maat_init() Maat_set_feather_opt(mctrl_g.d_feather,MAAT_OPT_REDIS_IP,Maat_redis_ip_d,MAX_STRING_LEN); Maat_set_feather_opt(mctrl_g.d_feather,MAAT_OPT_REDIS_PORT,&Maat_redis_port_d,sizeof(Maat_redis_port_d)); Maat_set_feather_opt(mctrl_g.d_feather,MAAT_OPT_REDIS_INDEX,&Maat_redis_index_d,sizeof(Maat_redis_index_d)); - Maat_set_feather_opt(mctrl_g.d_feather, MAAT_OPT_INSTANCE_NAME, DYNAMIC_NOMINEE_TABLE, strlen(DYNAMIC_NOMINEE_TABLE)+1); + Maat_set_feather_opt(mctrl_g.d_feather, MAAT_OPT_INSTANCE_NAME, DYNAMIC_NOMINEE_TABLE_NAME, strlen(DYNAMIC_NOMINEE_TABLE_NAME)+1); Maat_set_feather_opt(mctrl_g.s_feather,MAAT_OPT_REDIS_IP,Maat_redis_ip_s,MAX_STRING_LEN); Maat_set_feather_opt(mctrl_g.s_feather,MAAT_OPT_REDIS_PORT,&Maat_redis_port_s,sizeof(Maat_redis_port_s)); Maat_set_feather_opt(mctrl_g.s_feather,MAAT_OPT_REDIS_INDEX,&Maat_redis_index_s,sizeof(Maat_redis_index_s)); - Maat_set_feather_opt(mctrl_g.s_feather, MAAT_OPT_INSTANCE_NAME, STATIC_NOMINEE_TABLE, strlen(STATIC_NOMINEE_TABLE)+1); + Maat_set_feather_opt(mctrl_g.s_feather, MAAT_OPT_INSTANCE_NAME, STATIC_NOMINEE_TABLE_NAME, strlen(STATIC_NOMINEE_TABLE_NAME)+1); Maat_set_feather_opt(mctrl_g.i_feather,MAAT_OPT_REDIS_IP,Maat_redis_ip_i,MAX_STRING_LEN); Maat_set_feather_opt(mctrl_g.i_feather,MAAT_OPT_REDIS_PORT,&Maat_redis_port_i,sizeof(Maat_redis_port_i)); Maat_set_feather_opt(mctrl_g.i_feather,MAAT_OPT_REDIS_INDEX,&Maat_redis_index_i,sizeof(Maat_redis_index_i)); - Maat_set_feather_opt(mctrl_g.i_feather, MAAT_OPT_INSTANCE_NAME, INTERCEPT_TABLE, strlen(INTERCEPT_TABLE)+1); + Maat_set_feather_opt(mctrl_g.i_feather, MAAT_OPT_INSTANCE_NAME, INTERCEPT_TABLE_NAME, strlen(INTERCEPT_TABLE_NAME)+1); Maat_set_feather_opt(mctrl_g.n_feather,MAAT_OPT_REDIS_IP,Maat_redis_ip_n,MAX_STRING_LEN); Maat_set_feather_opt(mctrl_g.n_feather,MAAT_OPT_REDIS_PORT,&Maat_redis_port_n,sizeof(Maat_redis_port_n)); Maat_set_feather_opt(mctrl_g.n_feather,MAAT_OPT_REDIS_INDEX,&Maat_redis_index_n,sizeof(Maat_redis_index_n)); - Maat_set_feather_opt(mctrl_g.n_feather, MAAT_OPT_INSTANCE_NAME, NOMINEE_TABLE, strlen(NOMINEE_TABLE)+1); - Maat_set_feather_opt(mctrl_g.n_feather, MAAT_OPT_INSTANCE_NAME, CANDIDATE_TABLE, strlen(CANDIDATE_TABLE)+1); + Maat_set_feather_opt(mctrl_g.n_feather, MAAT_OPT_INSTANCE_NAME, NOMINEE_TABLE_NAME, strlen(NOMINEE_TABLE_NAME)+1); + Maat_set_feather_opt(mctrl_g.n_feather, MAAT_OPT_INSTANCE_NAME, CANDIDATE_TABLE_NAME, strlen(CANDIDATE_TABLE_NAME)+1); Maat_initiate_feather(mctrl_g.d_feather); Maat_initiate_feather(mctrl_g.s_feather); @@ -763,40 +738,40 @@ int main(int argc, char * argv [ ]) Maat_init(); htable_init(); - char static_nominee[]=STATIC_NOMINEE_TABLE; - char dynamic_nominee[]=DYNAMIC_NOMINEE_TABLE; - char nominee[]=NOMINEE_TABLE; - char candidate[]=CANDIDATE_TABLE; - char intercept[]=INTERCEPT_TABLE; - char d_policy[]=DNAT_POLICY_TABLE; + int static_flag=STATIC_NOMINEE_FLAG; + int dynamic_flag=DYNAMIC_NOMINEE_FLAG; + int dnat_policy_flag=DNAT_POLICY_FLAG; + int nominee_flag=NOMINEE_FLAG; + int candidate_flag=CANDIDATE_FLAG; + int intercept_flag=INTERCEPT_FLAG; int static_id=-1; int dynamic_id=-1; + int dnat_policy_id=-1; int nominee_id=-1; int candidate_id=-1; int intercept_id=-1; - int d_policy_id=-1; - static_id=Maat_table_register(mctrl_g.s_feather,static_nominee); - dynamic_id=Maat_table_register(mctrl_g.d_feather,dynamic_nominee); - d_policy_id=Maat_table_register(mctrl_g.s_feather,d_policy); + static_id=Maat_table_register(mctrl_g.s_feather,STATIC_NOMINEE_TABLE_NAME); + dynamic_id=Maat_table_register(mctrl_g.d_feather,DYNAMIC_NOMINEE_TABLE_NAME); + dnat_policy_id=Maat_table_register(mctrl_g.s_feather,DNAT_POLICY_TABLE_NAME); - if(static_id==-1||dynamic_id==-1||d_policy_id==-1) + if(static_id==-1||dynamic_id==-1||dnat_policy_id==-1) { MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"REGISTER_TABLE","S_D_DP Database table register failed\n"); assert(0); } - read_plugin_table(mctrl_g.s_feather,STATIC_NOMINEE_TABLE,s_d_start_cb,s_d_table_update_cb,s_d_finish_cb, - static_nominee,mctrl_g.logger_handle,static_id); - read_plugin_table(mctrl_g.d_feather,DYNAMIC_NOMINEE_TABLE,s_d_start_cb,s_d_table_update_cb,s_d_finish_cb, - dynamic_nominee,mctrl_g.logger_handle,dynamic_id); - read_plugin_table(mctrl_g.s_feather,DNAT_POLICY_TABLE,s_d_start_cb,s_d_table_update_cb,s_d_finish_cb, - d_policy,mctrl_g.logger_handle,d_policy_id); + read_plugin_table(mctrl_g.s_feather,STATIC_NOMINEE_TABLE_NAME,s_d_start_cb,s_d_table_update_cb,s_d_finish_cb, + &static_flag,mctrl_g.logger_handle,static_id); + read_plugin_table(mctrl_g.d_feather,DYNAMIC_NOMINEE_TABLE_NAME,s_d_start_cb,s_d_table_update_cb,s_d_finish_cb, + &dynamic_flag,mctrl_g.logger_handle,dynamic_id); + read_plugin_table(mctrl_g.s_feather,DNAT_POLICY_TABLE_NAME,s_d_start_cb,s_d_table_update_cb,s_d_finish_cb, + &dnat_policy_flag,mctrl_g.logger_handle,dnat_policy_id); - nominee_id=Maat_table_register(mctrl_g.n_feather,nominee); - candidate_id=Maat_table_register(mctrl_g.n_feather,candidate); - intercept_id=Maat_table_register(mctrl_g.i_feather, intercept); + nominee_id=Maat_table_register(mctrl_g.n_feather,NOMINEE_TABLE_NAME); + candidate_id=Maat_table_register(mctrl_g.n_feather,CANDIDATE_TABLE_NAME); + intercept_id=Maat_table_register(mctrl_g.i_feather,INTERCEPT_TABLE_NAME); if(nominee_id==-1||candidate_id==-1||intercept_id==-1) { @@ -804,12 +779,12 @@ int main(int argc, char * argv [ ]) assert(0); } - read_plugin_table(mctrl_g.i_feather,INTERCEPT_TABLE,n_i_c_start_cb,n_i_c_table_update_cb,n_i_c_finish_cb, - intercept,mctrl_g.logger_handle,intercept_id); - read_plugin_table(mctrl_g.n_feather,NOMINEE_TABLE,n_i_c_start_cb,n_i_c_table_update_cb,n_i_c_finish_cb, - nominee,mctrl_g.logger_handle,nominee_id); - read_plugin_table(mctrl_g.n_feather,CANDIDATE_TABLE,n_i_c_start_cb,n_i_c_table_update_cb,n_i_c_finish_cb, - candidate,mctrl_g.logger_handle,candidate_id); + read_plugin_table(mctrl_g.i_feather,INTERCEPT_TABLE_NAME,n_i_c_start_cb,n_i_c_table_update_cb,n_i_c_finish_cb, + &intercept_flag,mctrl_g.logger_handle,intercept_id); + read_plugin_table(mctrl_g.n_feather,NOMINEE_TABLE_NAME,n_i_c_start_cb,n_i_c_table_update_cb,n_i_c_finish_cb, + &nominee_flag,mctrl_g.logger_handle,nominee_id); + read_plugin_table(mctrl_g.n_feather,CANDIDATE_TABLE_NAME,n_i_c_start_cb,n_i_c_table_update_cb,n_i_c_finish_cb, + &candidate_flag,mctrl_g.logger_handle,candidate_id); while(1) { diff --git a/src/ir_mctrl.h b/src/ir_mctrl.h index d409d51..ac60fcc 100644 --- a/src/ir_mctrl.h +++ b/src/ir_mctrl.h @@ -16,40 +16,26 @@ #define MCTRL_CONF_FILE "./conf/mctrl.conf" //table name -#define NOMINEE_TABLE "IR_NOMINEE_IP" -#define INTERCEPT_TABLE "IR_INTERCEPT_IP" -#define STATIC_NOMINEE_TABLE "IR_STATIC_NOMINEE_IP" -#define DYNAMIC_NOMINEE_TABLE "IR_DYNAMIC_NOMINEE_IP" -#define CANDIDATE_TABLE "IR_CANDIDATE_IP" -#define DNAT_POLICY_TABLE "IR_DNAT_POLICY" +#define STATIC_NOMINEE_TABLE_NAME "IR_STATIC_NOMINEE_IP" +#define DYNAMIC_NOMINEE_TABLE_NAME "IR_DYNAMIC_NOMINEE_IP" +#define DNAT_POLICY_TABLE_NAME "IR_DNAT_POLICY" +#define NOMINEE_TABLE_NAME "IR_NOMINEE_IP" +#define INTERCEPT_TABLE_NAME "IR_INTERCEPT_IP" +#define CANDIDATE_TABLE_NAME "IR_CANDIDATE_IP" #define SLEEP_TIME 43200 #define TIME_OUT 30 #define MAX_THREAD_NUM 1 -//nominee_type -#define STATIC_NOMINEE_INFO 1 -#define DYNAMIC_NOMINEE_INFO 2 -#define DNAT_POLICY_INFO 3 -#define NOMINEE_INFO 4 -#define INTERCEPT_INFO 5 -#define CANDIDATE_INFO 6 - -//htable flag -#define S_OR_D_ORIGIN_FLAG 8 -#define INTERCEPT_FLAG 4 -#define NOMINEE_FLAG 2 -#define CANDIDATE_FLAG 1 -#define D_POLICY_FLAG 3 - -#define DP_AND_I_FLAG 7 -#define O_AND_C_FLAG 9 -#define O_AND_N_FLAG 10 -#define O_AND_C_AND_N_FLAG 11 -#define O_AND_I_FLAG 12 -#define O_AND_C_AND_I_FLAG 13 -#define O_AND_I_AND_N_FLAG 14 -#define ALL_EXIST_FLAG 15 +#define DNAT_NUMBER 500000000 +#define SNAT_DYNAMIC_NUMBER 1000000000 +//table flag +#define STATIC_NOMINEE_FLAG 1 +#define DYNAMIC_NOMINEE_FLAG 2 +#define DNAT_POLICY_FLAG 4 +#define NOMINEE_FLAG 8 +#define INTERCEPT_FLAG 16 +#define CANDIDATE_FLAG 32 struct IR_MCTRL_INFO { @@ -75,7 +61,6 @@ struct IR_MCTRL_INFO char op_time[MAX_TIME_LEN]; int do_log; int htable_flag; - int nominee_type; int version; }; |
