summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ir_mctrl.cpp814
-rw-r--r--src/ir_mctrl.h86
-rw-r--r--src/mctrl.cpp138
-rw-r--r--src/mctrl.h3
4 files changed, 94 insertions, 947 deletions
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 <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <unistd.h>
-#include <time.h>
-#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<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*)"nominee_intercept_candidate_maat_update_cb","read nom_intercept_candidate_table flag 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*)"nominee_intercept_candidate_maat_update_cb"," del table_id:%d,data:%s is_valid==0,del succeed",*(int*)u_para,table_line);
- return;
- }
-
- htable_data=MESA_htable_search_cb(mctrl_g.mctrl_htable_handle,key_id,sizeof(rule_id), nominee_intercept_candidate_search_htable_cb,u_para,&search_ret);
-
- if(htable_data==NULL)
- {
- del_ir_redis_info(*(int*)u_para,table_line,rule_id);
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"nominee_intercept_candidate_maat_update_cb","htable data not exist,del it! rule_id is:%d",rule_id);
- }
- else
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"nominee_intercept_candidate_maat_update_cb","htable data exist! rule_id is:%d",rule_id);
- }
- return;
-}
-
-void htable_data_free(void *data)
-{
- if(data!=NULL)
- {
- int rule_id=0;
- sscanf((char*)data,"%*d\t%d",&rule_id);
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_INFO, (char*)"htable_data_free","rule_id is:%d",rule_id);
- free(data);
- data=NULL;
- }
- return;
-}
-
-void set_ir_redis_info(int flag,const char* table_line,int rule_id)
-{
- if(!(flag & INTERCEPT_FLAG))
- {
- set_ir_line(mctrl_g.i_feather, (char*)INTERCEPT_TABLE_NAME,table_line,rule_id);
- }
-
- if((!(flag & NOMINEE_FLAG))&&(!(flag & DNAT_POLICY_FLAG)))
- {
- set_ir_line(mctrl_g.n_feather,(char*)NOMINEE_TABLE_NAME,table_line,rule_id);
- }
-
- return;
-}
-
-void sta_dyn_policy_maat_update_cb(int table_id,const char* table_line,void* u_para)
-{
- int add_ret=0;
- struct IR_MCTRL_INFO mctrl_info;
- memset(&mctrl_info,0,sizeof(mctrl_info));
- char *htable_data=NULL;
- void *search_result=NULL;
- int rule_id=0;
- int del_ret=0;
- long cb_ret=0;
- switch(*(int*)u_para)
- {
- case DYNAMIC_NOMINEE_FLAG:
- mctrl_info.addr_pool_id=0;
- memcpy(mctrl_info.src_port,"0",sizeof("0"));
- memcpy(mctrl_info.mask_src_ip,"0.0.0.0",sizeof("0.0.0.0"));
- memcpy(mctrl_info.mask_src_port,"0",sizeof("0"));
- memcpy(mctrl_info.dst_ip,"0.0.0.0",sizeof("0.0.0.0"));
- memcpy(mctrl_info.mask_dst_ip,"0.0.0.0",sizeof("0.0.0.0"));
- memcpy(mctrl_info.dst_port,"0",sizeof("0"));
- memcpy(mctrl_info.mask_dst_port,"0",sizeof("0"));
- memcpy(mctrl_info.effective_range,"{}",sizeof("{}"));
- mctrl_info.action=96;
- mctrl_info.service=832;
- mctrl_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",
- &mctrl_info.region_id,&mctrl_info.addr_type,&mctrl_info.procotol,mctrl_info.src_ip,
- &mctrl_info.direction,mctrl_info.user_region,&mctrl_info.is_valid,&mctrl_info.service);
- mctrl_info.region_id=(mctrl_info.region_id%SNAT_DYNAMIC_NUMBER)+SNAT_DYNAMIC_NUMBER;
- mctrl_info.group_id=mctrl_info.region_id;
- break;
- case STATIC_NOMINEE_FLAG:
- memcpy(mctrl_info.user_region,"0",sizeof("0"));
- memcpy(mctrl_info.effective_range,"{}",sizeof("{}"));
- mctrl_info.service=832;
- 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.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.region_id=(mctrl_info.region_id%DNAT_NUMBER)+DNAT_NUMBER;
- break;
- case DNAT_POLICY_FLAG:
- 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.mask_src_ip,"0.0.0.0",sizeof("0.0.0.0"));
- memcpy(mctrl_info.mask_src_port,"0",sizeof("0"));
- memcpy(mctrl_info.mask_dst_ip,"0.0.0.0",sizeof("0.0.0.0"));
- memcpy(mctrl_info.mask_dst_port,"0",sizeof("0"));
- memcpy(mctrl_info.user_region,"0",sizeof("0"));
- memcpy(mctrl_info.effective_range,"{}",sizeof("{}"));
- mctrl_info.direction=0;
- mctrl_info.action=96;
- mctrl_info.service=832;
- mctrl_info.htable_flag=DNAT_POLICY_FLAG;
- sscanf(table_line,"%d\t%d\t%s\t%s\t%d\t%*s\t%*s\t%*s\t%d\t%*d\t%*d\t%d\t%*s\t%*s",
- &mctrl_info.region_id,&mctrl_info.addr_type,mctrl_info.dst_ip,mctrl_info.dst_port,&mctrl_info.procotol,
- &mctrl_info.do_log,&mctrl_info.is_valid);
- mctrl_info.group_id=mctrl_info.region_id;
- mctrl_info.region_id=mctrl_info.region_id%DNAT_NUMBER;
- break;
- default:
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"sta_dyn_policy_maat_update_cb","read_snat_or_dnat table flag error!!");
- assert(0);
- break;
- }
-
- unsigned char *key_id=(unsigned char*)&mctrl_info.region_id;
- rule_id=mctrl_info.region_id;
-
- if(mctrl_info.is_valid==1)
- {
-
- htable_data=(char*)malloc(HTABLE_DATA_LEN);
- if(htable_data==NULL)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"sta_dyn_policy_maat_update_cb","malloc htable_data error!!");
- exit(1);
- }
- 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);
- add_ret=MESA_htable_add(mctrl_g.mctrl_htable_handle,key_id,sizeof(rule_id),htable_data);
- if(add_ret<0)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"sta_dyn_policy_maat_update_cb","add htable error:%d",add_ret);
- }
- else
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"sta_dyn_policy_maat_update_cb","add htable succeed:%d",add_ret);
- }
-
- MESA_htable_search_cb(mctrl_g.mctrl_htable_handle,key_id,sizeof(rule_id),set_update_search_htable_cb,NULL,&cb_ret);
-
- set_ir_redis_info(cb_ret,htable_data,rule_id);
-
- }
-
- else if(mctrl_info.is_valid==0)
- {
- search_result=MESA_htable_search_cb(mctrl_g.mctrl_htable_handle,key_id,sizeof(rule_id),del_update_search_htable_cb,NULL,&cb_ret);
-
- if(search_result==NULL)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"sta_dyn_policy_maat_update_cb", "already del!!!");
- return;
- }
-
- del_ir_redis_info(cb_ret,table_line,rule_id);
-
- del_ret=MESA_htable_del(mctrl_g.mctrl_htable_handle,key_id,sizeof(rule_id),htable_data_free);
-
- if(del_ret<0)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"sta_dyn_policy_maat_update_cb","del htable error:%d",del_ret);
- assert(0);
- }
- }
- else
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"sta_dyn_policy_maat_update_cb", "is_valid default !!!");
- assert(0);
- }
-
- return;
-}
-
-void sta_dyn_policy_htable_full_iterate(const uchar * key, uint size, void * data, void * user)
-{
- struct IR_MCTRL_INFO mctrl_info;
- memset(&mctrl_info,0,sizeof(mctrl_info));
- char *htable_data=(char*)data;
- int del_ret=0;
- if(htable_data==NULL)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"sta_dyn_policy_htable_full_iterate","htable is null");
- return;
- }
-
- 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_g.update_type_s==MAAT_RULE_UPDATE_TYPE_FULL&&(mctrl_info.htable_flag & STATIC_NOMINEE_FLAG)&&mctrl_info.version!=mctrl_g.version_s)||
- (mctrl_g.update_type_d==MAAT_RULE_UPDATE_TYPE_FULL&&(mctrl_info.htable_flag & DYNAMIC_NOMINEE_FLAG)&&mctrl_info.version!=mctrl_g.version_d)||
- (mctrl_g.update_type_dp==MAAT_RULE_UPDATE_TYPE_FULL&&(mctrl_info.htable_flag & DNAT_POLICY_FLAG)&&mctrl_info.version!=mctrl_g.version_dp))
-
- {
- del_ir_redis_info(mctrl_info.htable_flag,(char*)data,mctrl_info.region_id);
-
- unsigned char *key_id=(unsigned char*)&mctrl_info.region_id;
-
- del_ret=MESA_htable_del(mctrl_g.mctrl_htable_handle,key_id,sizeof(int),htable_data_free);
-
- if(del_ret<0)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"sta_dyn_policy_htable_full_iterate","del htable error:%d",del_ret);
- assert(0);
- }
- }
- return;
-}
-
-
-void sta_dyn_policy_maat_finish_cb(void* u_para)
-{
- if((*(int*)u_para==DYNAMIC_NOMINEE_FLAG)&&mctrl_g.update_type_d==MAAT_RULE_UPDATE_TYPE_FULL)
- {
- MESA_htable_iterate(mctrl_g.mctrl_htable_handle, sta_dyn_policy_htable_full_iterate,NULL);
- mctrl_g.update_type_d=MAAT_RULE_UPDATE_TYPE_INC;
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_DEBUG, (char*)"sta_dyn_policy_maat_finish_cb", "table_id:%d,update_type:%d,finish succeed",*(int*)u_para,mctrl_g.update_type_d);
- }
- else if((*(int*)u_para==STATIC_NOMINEE_FLAG)&&mctrl_g.update_type_s==MAAT_RULE_UPDATE_TYPE_FULL)
- {
- MESA_htable_iterate(mctrl_g.mctrl_htable_handle, sta_dyn_policy_htable_full_iterate,NULL);
- mctrl_g.update_type_s=MAAT_RULE_UPDATE_TYPE_INC;
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_DEBUG, (char*)"sta_dyn_policy_maat_finish_cb", "table_id:%d,update_type:%d,finish succeed",*(int*)u_para,mctrl_g.update_type_s);
- }
- else if((*(int*)u_para==DNAT_POLICY_FLAG)&&mctrl_g.update_type_dp==MAAT_RULE_UPDATE_TYPE_FULL)
- {
-
- MESA_htable_iterate(mctrl_g.mctrl_htable_handle, sta_dyn_policy_htable_full_iterate,NULL);
- mctrl_g.update_type_dp=MAAT_RULE_UPDATE_TYPE_INC;
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_DEBUG, (char*)"sta_dyn_policy_maat_finish_cb", "table_id:%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*)"sta_dyn_policy_maat_finish_cb", "table_id:%d,finish succeed",*(int*)u_para);
- }
- return;
-}
-
-
-void nominee_intercept_candidate_maat_finish_cb(void* u_para)
-{
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"nominee_intercept_candidate_maat_finish_cb", "table_id:%d,finish succeed",*(int*)u_para);
- return;
-}
-
-
-int register_plugin_table(Maat_feather_t feather,const char* table_name,
- Maat_start_callback_t *start,Maat_update_callback_t *update,Maat_finish_callback_t *finish,
- void *u_para,int table_id)
-{
- int ret=0;
-
- ret=Maat_table_callback_register(feather, table_id,
- start,
- update,
- finish,
- u_para);
- if(ret<0)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"register_plugin_table", "Maat callback register table %s error.\n",table_name);
- assert(0);
- }
-
- return ret;
-}
-
-
-void htable_iterate(const uchar * key, uint size, void * data, void * user)
-{
- int htable_flag=0;
- int rule_id=0;
- char *table_line=(char*)data;
-
- sscanf(table_line,"%d\t%*d\t%d",&htable_flag,&rule_id);
-
- set_ir_redis_info(htable_flag,table_line,rule_id);
-
- return;
-}
-
-void Maat_init()
-{
-// load conf
- const char *section = "Mctrl";
- const char *section_d = "Mctrl_D";
- const char *section_s = "Mctrl_S";
- const char *section_i = "Mctrl_I";
- const char *section_n = "Mctrl_N";
- char table_info_path[MAX_PATH_LEN];
- char logger_path[MAX_PATH_LEN];
- int max_thread_num=0;
- int logger_level=0;
-
- char Maat_redis_ip_d[MAX_STRING_LEN];
- int Maat_redis_port_d=0;
- int Maat_redis_index_d=0;
-
- char Maat_redis_ip_s[MAX_STRING_LEN];
- int Maat_redis_port_s=0;
- int Maat_redis_index_s=0;
-
- char Maat_redis_ip_i[MAX_STRING_LEN];
- int Maat_redis_port_i=0;
- int Maat_redis_index_i=0;
-
- char Maat_redis_ip_n[MAX_STRING_LEN];
- int Maat_redis_port_n=0;
- int Maat_redis_index_n=0;
-
- MESA_load_profile_string_def((char*)MCTRL_CONF_FILE, section,"table_info_path", table_info_path, sizeof(table_info_path), "./conf/table_info.conf");
- MESA_load_profile_string_def((char*)MCTRL_CONF_FILE, section,"logger_path", logger_path, sizeof(logger_path), "./log/ir_mctrl.log");
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section,"logger_level", &logger_level,RLOG_LV_FATAL);
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section,"max_thread_num", &max_thread_num, 1);
-//dynamic server conf
- MESA_load_profile_string_def((char*)MCTRL_CONF_FILE, section_d,"Maat_redis_ip", Maat_redis_ip_d, sizeof(Maat_redis_ip_d), "192.168.11.243");
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section_d,"Maat_redis_port", &Maat_redis_port_d,6800);
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section_d,"Maat_redis_index", &Maat_redis_index_d,1);
-//static server conf
- MESA_load_profile_string_def((char*)MCTRL_CONF_FILE, section_s, "Maat_redis_ip", Maat_redis_ip_s, sizeof(Maat_redis_ip_s), "192.168.11.243");
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section_s,"Maat_redis_port", &Maat_redis_port_s,6379);
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section_s,"Maat_redis_index", &Maat_redis_index_s,6);
-//nominee and candate conf
- MESA_load_profile_string_def((char*)MCTRL_CONF_FILE, section_n,"Maat_redis_ip", Maat_redis_ip_n, sizeof(Maat_redis_ip_n), "192.168.11.243");
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section_n,"Maat_redis_port", &Maat_redis_port_n,6800);
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section_n,"Maat_redis_index", &Maat_redis_index_n,5);
-//intercept conf
- MESA_load_profile_string_def((char*)MCTRL_CONF_FILE, section_i,"Maat_redis_ip", Maat_redis_ip_i, sizeof(Maat_redis_ip_i), "192.168.11.243");
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section_i,"Maat_redis_port", &Maat_redis_port_i,6800);
- MESA_load_profile_int_def((char*)MCTRL_CONF_FILE, section_i,"Maat_redis_index", &Maat_redis_index_i,1);
-
-//log
- mctrl_g.logger_handle=MESA_create_runtime_log_handle(logger_path,logger_level);
- if(mctrl_g.logger_handle == NULL)
- {
- printf("IR MESA_create_runtime_log_handle() error!\n");
- assert(0);
- }
-
-//redis
- mctrl_g.d_feather = Maat_feather(max_thread_num, table_info_path,mctrl_g.logger_handle);
- mctrl_g.s_feather = Maat_feather(max_thread_num, table_info_path,mctrl_g.logger_handle);
- mctrl_g.n_feather = Maat_feather(max_thread_num, table_info_path,mctrl_g.logger_handle);
- mctrl_g.i_feather = Maat_feather(max_thread_num, table_info_path,mctrl_g.logger_handle);
-
- if(mctrl_g.d_feather==NULL||mctrl_g.s_feather==NULL||mctrl_g.n_feather==NULL||mctrl_g.i_feather==NULL)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"MAAT","IR maat_feather error!");
- assert(0);
- }
-
- 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_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_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_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_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);
- Maat_initiate_feather(mctrl_g.i_feather);
- Maat_initiate_feather(mctrl_g.n_feather);
-
-}
-
-
-int htable_init()
-{
- int htable_ret=0;
- mctrl_g.mctrl_htable_handle = MESA_htable_born();
- if(mctrl_g.mctrl_htable_handle == NULL)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"htable","htable born failed");
- assert(0);
- return -1;
- }
-
- htable_ret = MESA_htable_mature(mctrl_g.mctrl_htable_handle);
-
- if(0 == htable_ret)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"htable","htable mature succ");
- return 0;
- }
- else
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"htable","htable mature failed");
- assert(0);
- return -1;
- }
-}
-
-int main(int argc, char * argv [ ])
-{
-
- Maat_init();
- htable_init();
-
- 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;
-
- 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||dnat_policy_id==-1)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"main","Sta_Dyn_policy Database table register failed\n");
- assert(0);
- }
-
- register_plugin_table(mctrl_g.s_feather,STATIC_NOMINEE_TABLE_NAME,sta_dyn_policy_maat_start_cb,sta_dyn_policy_maat_update_cb,sta_dyn_policy_maat_finish_cb,
- &static_flag,static_id);
- register_plugin_table(mctrl_g.d_feather,DYNAMIC_NOMINEE_TABLE_NAME,sta_dyn_policy_maat_start_cb,sta_dyn_policy_maat_update_cb,sta_dyn_policy_maat_finish_cb,
- &dynamic_flag,dynamic_id);
- register_plugin_table(mctrl_g.s_feather,DNAT_POLICY_TABLE_NAME,sta_dyn_policy_maat_start_cb,sta_dyn_policy_maat_update_cb,sta_dyn_policy_maat_finish_cb,
- &dnat_policy_flag,dnat_policy_id);
-
- 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);
-
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"main","static table_id is:%d,dy_id is:%d,dp_id is:%d,nominee_table_id is:%d,intercept_table_id is:%d,candidate_table_id is:%d",
- static_id,dynamic_id,dnat_policy_id,nominee_id,intercept_id,candidate_id);
-
- if(nominee_id==-1||candidate_id==-1||intercept_id==-1)
- {
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"main","Nom_Candidate_Intercept Database table register failed\n");
- assert(0);
- }
-
- register_plugin_table(mctrl_g.i_feather,INTERCEPT_TABLE_NAME,nominee_intercept_candidate_maat_start_cb,nominee_intercept_candidate_maat_update_cb,nominee_intercept_candidate_maat_finish_cb,
- &intercept_flag,intercept_id);
- register_plugin_table(mctrl_g.n_feather,NOMINEE_TABLE_NAME,nominee_intercept_candidate_maat_start_cb,nominee_intercept_candidate_maat_update_cb,nominee_intercept_candidate_maat_finish_cb,
- &nominee_flag,nominee_id);
- register_plugin_table(mctrl_g.n_feather,CANDIDATE_TABLE_NAME,nominee_intercept_candidate_maat_start_cb,nominee_intercept_candidate_maat_update_cb,nominee_intercept_candidate_maat_finish_cb,
- &candidate_flag,candidate_id);
-
- while(1)
- {
- MESA_htable_iterate(mctrl_g.mctrl_htable_handle, htable_iterate, NULL);
- sleep(SLEEP_TIME);
- }
-
- Maat_burn_feather(mctrl_g.d_feather);
- Maat_burn_feather(mctrl_g.s_feather);
- Maat_burn_feather(mctrl_g.i_feather);
- Maat_burn_feather(mctrl_g.n_feather);
- MESA_destroy_runtime_log_handle(mctrl_g.logger_handle);
- MESA_htable_destroy(mctrl_g.mctrl_htable_handle,htable_data_free);
- return 0;
-
-}
-
-
diff --git a/src/ir_mctrl.h b/src/ir_mctrl.h
deleted file mode 100644
index 6a42a98..0000000
--- a/src/ir_mctrl.h
+++ /dev/null
@@ -1,86 +0,0 @@
-#ifndef IR_MCTRL_H
-#define IR_MCTRL_H
-
-#include "MESA_handle_logger.h"
-#include "Maat_rule.h"
-#include "Maat_command.h"
-#include "MESA_htable.h"
-
-#define MAX_STRING_LEN 64
-#define MAX_PORT_LEN 6
-#define MAX_PATH_LEN 64
-#define MAX_TABLE_NAME_LEN 64
-#define MAX_TIME_LEN 40
-#define HTABLE_DATA_LEN 512
-
-#define MCTRL_CONF_FILE "./conf/mctrl.conf"
-
-//table name
-#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 1800
-#define MAX_THREAD_NUM 1
-
-#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
-{
- int region_id;
- int group_id;
- int addr_type;
- char src_ip[MAX_STRING_LEN];
- char mask_src_ip[MAX_STRING_LEN];
- char src_port[MAX_PORT_LEN];
- char mask_src_port[MAX_PORT_LEN];
- char dst_ip[MAX_STRING_LEN];
- char mask_dst_ip[MAX_STRING_LEN];
- char dst_port[MAX_PORT_LEN];
- char mask_dst_port[MAX_PORT_LEN];
- int procotol;
- int direction;
- int is_valid;
- int action;
- int service;
- int addr_pool_id;
- char effective_range[MAX_STRING_LEN];
- char user_region[MAX_STRING_LEN];
- char op_time[MAX_TIME_LEN];
- int do_log;
- int htable_flag;
- int version;
-};
-
-struct MCTRL_GLOCAL_INFO
-{
- void *logger_handle;
- Maat_feather_t d_feather;
- Maat_feather_t s_feather;
- Maat_feather_t n_feather;
- Maat_feather_t i_feather;
- MESA_htable_handle mctrl_htable_handle;
- int update_type_s;
- int update_type_d;
- int update_type_dp;
- int version_s;
- int version_d;
- int version_dp;
-};
-
-
-#endif
-
diff --git a/src/mctrl.cpp b/src/mctrl.cpp
index 4f347ac..e29ca5c 100644
--- a/src/mctrl.cpp
+++ b/src/mctrl.cpp
@@ -29,7 +29,7 @@ int set_ir_line(Maat_feather_t feather,const char *ir_table_name,const char *tab
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));
+ memset(&line_rule,0,sizeof(line_rule));
line_rule.label_id=0;
line_rule.rule_id=rule_id;
@@ -63,15 +63,15 @@ int set_ir_line(Maat_feather_t feather,const char *ir_table_name,const char *tab
ret=Maat_cmd_set_line(feather, p_line, MAAT_OP_ADD);
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"set_line", "set_table_name:%s set_table_line:%s",ir_table_name,m_table_line);
+ MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"set_line", "%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_line","%s:set rule_id:%d redis line error",ir_table_name,rule_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"set_line","%s:set rule_id:%d,set redis line error",ir_table_name,rule_id);
}
else
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"set_line","%s:set rule_id:%d redis line success",ir_table_name,rule_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"set_line","%s:set rule_id:%d,set redis line success",ir_table_name,rule_id);
}
return ret;
}
@@ -102,15 +102,15 @@ int del_ir_line(Maat_feather_t feather,const char *ir_table_name,const char *tab
ret=Maat_cmd_set_line(feather, p_line, MAAT_OP_DEL);
}
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"del_line", "del_table_name:%s del_rule_id is:%d table_line:%s",ir_table_name,rule_id,table_line);
+ MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL, (char*)"del_line", "del_table_name:%s,del rule_id:%d,table_line:%s",ir_table_name,rule_id,table_line);
if(ret==-1)
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"del_line","%s:del rule_id is %d redis line error",ir_table_name,rule_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"del_line","%s:del rule_id:%d,redis line error",ir_table_name,rule_id);
}
else
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"del_line","%s:del rule_id is %d redis line success",ir_table_name,rule_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"del_line","%s:del rule_id:%d,redis line success",ir_table_name,rule_id);
}
return ret;
@@ -192,6 +192,36 @@ void htable_data_free(void *data)
return;
}
+void table_id_change_name(int table_id,char **table_name)
+{
+ switch(table_id)
+ {
+ case STATIC_NOMINEE_ID:
+ *table_name=(char*)STATIC_NOMINEE_TABLE_NAME;
+ break;
+ case DYNAMIC_NOMINEE_ID:
+ *table_name=(char*)DYNAMIC_NOMINEE_TABLE_NAME;
+ break;
+ case DNAT_POLICY_ID:
+ *table_name=(char*)DNAT_POLICY_TABLE_NAME;
+ break;
+ case NOMINEE_ID:
+ *table_name=(char*)NOMINEE_TABLE_NAME;
+ break;
+ case INTERCEPT_ID:
+ *table_name=(char*)INTERCEPT_TABLE_NAME;
+ break;
+ case CANDIDATE_ID:
+ *table_name=(char*)CANDIDATE_TABLE_NAME;
+ break;
+ default:
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_INFO, (char*)"table_id_change_name","table_id error!!");
+ break;
+ }
+ return;
+}
+
+
void static_dynamic_dpolicy_table_new_cb(int table_id, const char* key, const char* table_line, MAAT_PLUGIN_EX_DATA* ad, long argl, void *argp)
{
struct IR_MCTRL_INFO mctrl_info;
@@ -201,58 +231,53 @@ void static_dynamic_dpolicy_table_new_cb(int table_id, const char* key, const ch
int *add_data=NULL;
int add_ret=0;
long cb_ret=0;
-
+ char *table_name=NULL;
+ memcpy(mctrl_info.effective_range,"{}",sizeof("{}"));
+ memcpy(mctrl_info.mask_src_ip,"255.255.255.255",sizeof("255.255.255.255"));
+ memcpy(mctrl_info.mask_dst_ip,"255.255.255.255",sizeof("255.255.255.255"));
+ memcpy(mctrl_info.mask_src_port,"65535",sizeof("65535"));
+ memcpy(mctrl_info.mask_dst_port,"65535",sizeof("65535"));
+ mctrl_info.service=832;
+
switch(table_id)
{
case DYNAMIC_NOMINEE_ID:
mctrl_info.addr_pool_id=0;
memcpy(mctrl_info.src_port,"0",sizeof("0"));
- memcpy(mctrl_info.mask_src_ip,"0.0.0.0",sizeof("0.0.0.0"));
- memcpy(mctrl_info.mask_src_port,"0",sizeof("0"));
memcpy(mctrl_info.dst_ip,"0.0.0.0",sizeof("0.0.0.0"));
- memcpy(mctrl_info.mask_dst_ip,"0.0.0.0",sizeof("0.0.0.0"));
memcpy(mctrl_info.dst_port,"0",sizeof("0"));
- memcpy(mctrl_info.mask_dst_port,"0",sizeof("0"));
- memcpy(mctrl_info.effective_range,"{}",sizeof("{}"));
mctrl_info.action=96;
- mctrl_info.service=832;
mctrl_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",
&mctrl_info.region_id,&mctrl_info.addr_type,&mctrl_info.procotol,mctrl_info.src_ip,
&mctrl_info.direction,mctrl_info.user_region,&mctrl_info.is_valid,&mctrl_info.service);
mctrl_info.region_id=(mctrl_info.region_id%SNAT_DYNAMIC_NUMBER)+SNAT_DYNAMIC_NUMBER;
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"));
- memcpy(mctrl_info.effective_range,"{}",sizeof("{}"));
- mctrl_info.service=832;
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.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);
+ 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:
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.mask_src_ip,"0.0.0.0",sizeof("0.0.0.0"));
- memcpy(mctrl_info.mask_src_port,"0",sizeof("0"));
- memcpy(mctrl_info.mask_dst_ip,"0.0.0.0",sizeof("0.0.0.0"));
- memcpy(mctrl_info.mask_dst_port,"0",sizeof("0"));
memcpy(mctrl_info.user_region,"0",sizeof("0"));
- memcpy(mctrl_info.effective_range,"{}",sizeof("{}"));
- mctrl_info.direction=0;
+ mctrl_info.direction=0;
mctrl_info.action=96;
- mctrl_info.service=832;
mctrl_info.htable_flag=DNAT_POLICY_FLAG;
sscanf(table_line,"%d\t%d\t%s\t%s\t%d\t%*s\t%*s\t%*s\t%d\t%*d\t%*d\t%d\t%*s\t%*s",
&mctrl_info.region_id,&mctrl_info.addr_type,mctrl_info.dst_ip,mctrl_info.dst_port,&mctrl_info.procotol,
&mctrl_info.do_log,&mctrl_info.is_valid);
mctrl_info.group_id=mctrl_info.region_id;
mctrl_info.region_id=mctrl_info.region_id%DNAT_NUMBER;
+ table_name=(char*)DNAT_POLICY_TABLE_NAME;
break;
default:
MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"static_dynamic_dpolicy_table_new_cb","read_snat_or_dnat table flag error!!table_id:%d",table_id);
@@ -279,18 +304,18 @@ void static_dynamic_dpolicy_table_new_cb(int table_id, const char* key, const ch
if(add_ret<0)
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"static_dynamic_dpolicy_table_new_cb","add htable error:%d,table_id:%d,rule_id:%d",add_ret,table_id,mctrl_info.region_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"static_dynamic_dpolicy_table_new_cb","add htable error:%d,table_name:%s,rule_id:%d",add_ret,table_name,mctrl_info.region_id);
assert(0);
}
else
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"static_dynamic_dpolicy_table_new_cb","add htable succeed:%d,table_id:%d,rule_id:%d",add_ret,table_id,mctrl_info.region_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"static_dynamic_dpolicy_table_new_cb","add htable succeed:%d,table_name:%s,rule_id:%d",add_ret,table_name,mctrl_info.region_id);
}
set_ir_redis_info(cb_ret,htable_data,mctrl_info.region_id);
add_data=(int*)calloc(sizeof(int),1);
if(add_data==NULL)
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"static_dynamic_dpolicy_table_new_cb","malloc add_data error!!table_id:%d,rule_id:%d",table_id,mctrl_info.region_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"static_dynamic_dpolicy_table_new_cb","malloc add_data error!!table_name:%s,rule_id:%d",table_name,mctrl_info.region_id);
exit(1);
}
*add_data=mctrl_info.region_id;
@@ -298,7 +323,7 @@ void static_dynamic_dpolicy_table_new_cb(int table_id, const char* key, const ch
}
else
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_INFO, (char*)"static_dynamic_dpolicy_table_new_cb","htable_info exit!table_id:%d rule_id:%d",table_id,mctrl_info.region_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_INFO, (char*)"static_dynamic_dpolicy_table_new_cb","htable_info exit!table_name:%s rule_id:%d",table_name,mctrl_info.region_id);
}
return;
@@ -308,20 +333,24 @@ void static_dynamic_dpolicy_table_free_cb(int table_id, MAAT_PLUGIN_EX_DATA* ad,
void* search_result=NULL;
int del_ret=0;
long cb_ret=0;
+ char *table_name=NULL;
+
+ table_id_change_name(table_id,&table_name);
+
search_result=MESA_htable_search_cb(mctrl_g.mctrl_htable_handle,(unsigned char*)*ad,sizeof(int),free_update_search_htable_cb,NULL,&cb_ret);
if(search_result==NULL)
{
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"static_dynamic_dpolicy_table_free_cb", "already del!!!table_id:%d",table_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"static_dynamic_dpolicy_table_free_cb", "already del!!!table_name:%s",table_name);
}
else
{
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"static_dynamic_dpolicy_table_free_cb", "del data,table_id:%d,rule_id:%d",table_id,*(int*)*ad);
+ MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO, (char*)"static_dynamic_dpolicy_table_free_cb", "del data,table_name:%s,rule_id:%d",table_name,*(int*)*ad);
del_ret=MESA_htable_del(mctrl_g.mctrl_htable_handle,(unsigned char*)*ad,sizeof(int),htable_data_free);
if(del_ret<0)
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"static_dynamic_dpolicy_table_free_cb","del htable error:%d,table_id:%d,rule_id:%d",del_ret,table_id,*(int*)*ad);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"static_dynamic_dpolicy_table_free_cb","del htable error:%d,table_name:%s,rule_id:%d",del_ret,table_name,*(int*)*ad);
assert(0);
}
}
@@ -341,6 +370,7 @@ long nominee_intercept_candidate_search_htable_cb(void *data, const uchar *key,
struct IR_MCTRL_INFO mctrl_info;
memset(&mctrl_info,0,sizeof(mctrl_info));
char *htable_data=(char*)data;
+ char *table_name=NULL;
if(htable_data==NULL)
{
@@ -360,21 +390,24 @@ long nominee_intercept_candidate_search_htable_cb(void *data, const uchar *key,
{
htable_flag+=INTERCEPT_FLAG;
}
+ table_name=(char*)INTERCEPT_TABLE_NAME;
break;
case NOMINEE_FLAG:
if(!(htable_flag & NOMINEE_FLAG))
{
htable_flag+=NOMINEE_FLAG;
}
+ table_name=(char*)NOMINEE_TABLE_NAME;
break;
case CANDIDATE_FLAG:
if(!(htable_flag & CANDIDATE_FLAG))
{
htable_flag+=CANDIDATE_FLAG;
}
+ table_name=(char*)CANDIDATE_TABLE_NAME;
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!!!table_flag:%d",*(int*)user_arg);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"nominee_intercept_candidate_search_htable_cb","read nom_intercept_candidate_table error!!!table_name:%s",table_name);
assert(0);
break;
}
@@ -385,7 +418,7 @@ long nominee_intercept_candidate_search_htable_cb(void *data, const uchar *key,
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","table_flag:%d ,Data rule_id:%d htable_flag:%d",*(int*)user_arg,mctrl_info.region_id, htable_flag);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"nominee_intercept_candidate_search_htable_cb","table_name:%s ,Data rule_id:%d htable_flag:%d",table_name,mctrl_info.region_id, htable_flag);
return htable_flag;
}
@@ -396,6 +429,9 @@ void nominee_intercept_candidate_table_new_cb(int table_id, const char* key, con
void* search_htable_result=NULL;
int rule_id=0;
int *add_data=NULL;
+ char *table_name=NULL;
+ table_id_change_name(table_id,&table_name);
+
sscanf(table_line,"%d\t",&rule_id);
if(*(int*)argp==NOMINEE_FLAG&&rule_id<DNAT_NUMBER)
@@ -409,19 +445,19 @@ void nominee_intercept_candidate_table_new_cb(int table_id, const char* key, con
if(search_htable_result==NULL)
{
del_ir_redis_info(*(int*)argp,table_line,rule_id);
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"nominee_intercept_candidate_table_new_cb","table_id:%d,rule_id:%d htable data not exist,del it!",table_id,rule_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"nominee_intercept_candidate_table_new_cb","table_name:%s,rule_id:%d htable data not exist,del it!",table_name,rule_id);
}
else
{
add_data=(int*)calloc(sizeof(int),1);
if(add_data==NULL)
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"nominee_intercept_candidate_table_new_cb","table_id:%d,rule_id:%d,malloc add_data error!!",table_id,rule_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_FATAL, (char*)"nominee_intercept_candidate_table_new_cb","table_name:%s,rule_id:%d,malloc add_data error!!",table_name,rule_id);
exit(1);
}
*add_data=rule_id;
*ad=add_data;
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"nominee_intercept_candidate_table_new_cb","htable data exist!table_id:%d,rule_id:%d",table_id,rule_id);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_DEBUG, (char*)"nominee_intercept_candidate_table_new_cb","htable data exist!table_name:%s,rule_id:%d",table_name,rule_id);
}
return;
@@ -430,7 +466,9 @@ void nominee_intercept_candidate_table_free_cb(int table_id, MAAT_PLUGIN_EX_DATA
{
if(*ad!=NULL)
{
- MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_INFO, (char*)"nominee_intercept_candidate_table_free_cb"," del table_id:%d,rule_id:%d, del succeed",table_id,*(int*)*ad);
+ char *table_name=NULL;
+ table_id_change_name(table_id,&table_name);
+ MESA_handle_runtime_log(mctrl_g.logger_handle, RLOG_LV_INFO, (char*)"nominee_intercept_candidate_table_free_cb"," del table_name:%s,rule_id:%d, del succeed",table_name,*(int*)*ad);
free(*ad);
}
@@ -479,10 +517,10 @@ void Maat_init()
{
// load conf
const char *section = "Mctrl";
- const char *section_d = "Mctrl_D";
- const char *section_s = "Mctrl_S";
- const char *section_i = "Mctrl_I";
- const char *section_n = "Mctrl_N";
+ const char *section_d = "Mctrl_DYNAMIC";
+ const char *section_s = "Mctrl_STATIC";
+ const char *section_i = "Mctrl_INTERCEPT";
+ const char *section_n = "Mctrl_NOMINEE";
char table_info_path[MAX_PATH_LEN];
char logger_path[MAX_PATH_LEN];
int max_thread_num=0;
@@ -589,7 +627,7 @@ int htable_init()
if(0 == htable_ret)
{
- MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_INFO,(char*)"htable init","htable mature succ");
+ MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"htable init","htable mature succeed");
return 0;
}
else
@@ -629,6 +667,10 @@ int main(int argc, char * argv [ ])
MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"main","static_dynamic_dpolicy Database table register failed\n");
assert(0);
}
+ else
+ {
+ MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"main","static_dynamic_dpolicy Database table register succeed\n");
+ }
register_plugin_ex_table(mctrl_g.s_feather,static_id,static_dynamic_dpolicy_table_new_cb,static_dynamic_dpolicy_table_free_cb,plugin_EX_dup_cb,NULL,0,&static_flag);
register_plugin_ex_table(mctrl_g.d_feather,dynamic_id,static_dynamic_dpolicy_table_new_cb,static_dynamic_dpolicy_table_free_cb,plugin_EX_dup_cb,NULL,0,&dynamic_flag);
@@ -643,6 +685,10 @@ int main(int argc, char * argv [ ])
MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"main","nominee_intercept_candidate Database table register failed\n");
assert(0);
}
+ else
+ {
+ MESA_handle_runtime_log(mctrl_g.logger_handle,RLOG_LV_FATAL,(char*)"main","nominee_intercept_candidate Database table register succeed\n");
+ }
register_plugin_ex_table(mctrl_g.i_feather,intercept_id,nominee_intercept_candidate_table_new_cb,nominee_intercept_candidate_table_free_cb,plugin_EX_dup_cb,NULL,0,&intercept_flag);
register_plugin_ex_table(mctrl_g.n_feather,nominee_id,nominee_intercept_candidate_table_new_cb,nominee_intercept_candidate_table_free_cb,plugin_EX_dup_cb,NULL,0,&nominee_flag);
diff --git a/src/mctrl.h b/src/mctrl.h
index a686d42..3fd62b6 100644
--- a/src/mctrl.h
+++ b/src/mctrl.h
@@ -48,6 +48,8 @@
struct IR_MCTRL_INFO
{
+
+ int htable_flag;
int region_id;
int group_id;
int addr_type;
@@ -69,7 +71,6 @@ struct IR_MCTRL_INFO
char user_region[MAX_STRING_LEN];
char op_time[MAX_TIME_LEN];
int do_log;
- int htable_flag;
};
struct mctrl_glocal_info