summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ir_mctrl.cpp495
-rw-r--r--src/ir_mctrl.h45
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;
};