summaryrefslogtreecommitdiff
path: root/src/mrl_redis.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mrl_redis.cpp')
-rw-r--r--src/mrl_redis.cpp54
1 files changed, 29 insertions, 25 deletions
diff --git a/src/mrl_redis.cpp b/src/mrl_redis.cpp
index 78b12c5..90b83c4 100644
--- a/src/mrl_redis.cpp
+++ b/src/mrl_redis.cpp
@@ -31,8 +31,8 @@ long ht_dnat_nominee_search_cb(void *data, const uchar *key, uint size, void *us
}
MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"ht_dnat_nominee_search_cb","get nominee value:"
"[config_id:%d,addr_pool_id:%d,addr_type:%d,ip_addr:%s,is_valid:%d,effective_range:%s,op_time:%s,nominee_count:%d]",
- dnat_nominee->config_id, dnat_nominee->addr_pool_id,dnat_nominee->addr_type,
- dnat_nominee->ip_addr, dnat_nominee->is_valid,dnat_nominee->effective_range,dnat_nominee->op_time);
+ dnat_nominee->config_id, dnat_nominee->addr_pool_id,dnat_nominee->addr_type, dnat_nominee->ip_addr,
+ dnat_nominee->is_valid,dnat_nominee->effective_range,dnat_nominee->op_time,dnat_nominee->nominee_count);
return dnat_nominee->nominee_count;
}
else
@@ -240,33 +240,23 @@ bool Maat_del_line(Maat_feather_t feather, int rule_id, int expire_after,const c
/*del the vxlan_info_table and mrl_ip_info table*/
void Maat_del_back_info(const int cfg_id, const char *back_ip)
{
- int ret = 0;
if(MESA_htable_search_cb(mrl_instance.ht_vxlan_info, (const unsigned char *)back_ip, MRL_STR_IP_LEN,NULL,NULL,NULL) != NULL)
{
- ret = MESA_htable_del(mrl_instance.ht_vxlan_info, (const unsigned char *)back_ip, MRL_STR_IP_LEN, NULL);
- if(ret < 0)
- {
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_FATAL,"mrl_del_back_info","ht_vxlan_info del vxlan_info key[back_ip:%s] error! ret is %d",back_ip,ret);
- assert(0);
- }
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"mrl_del_back_info","the vxlan_info key[back_ip:%s] of ht_vxlan_info is deleted.",back_ip);
- global_stat.vxlan_info_num --;
if(Maat_del_line(mrl_instance.dynamic_feather, cfg_id,MRL_DEL_AFTER,IR_VXLAN_INFO_TABLE_NAME))
{
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle,RLOG_LV_FATAL,"mrl_del_back_info","Maat succeed to del vlxan_info item [rule_id:%d,ip_addr:%s]",cfg_id,back_ip);
- global_stat.vxlan_info_num--;
+ MESA_handle_runtime_log(mrl_instance.mrl_log_handle,RLOG_LV_DEBUG,"mrl_del_back_info","Maat succeed to del vlxan_info item [rule_id:%d,ip_addr:%s]",cfg_id,back_ip);
}
else
{
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_FATAL,"mrl_del_back_info","Maat fail to del vlxan_info item[rule_id:%d,up_addr:%s]",cfg_id,back_ip);
+ MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"mrl_del_back_info","Maat fail to del vlxan_info item[rule_id:%d,up_addr:%s]",cfg_id,back_ip);
}
if(Maat_del_line(mrl_instance.dynamic_feather,cfg_id,MRL_DEL_NOW,IR_MRL_IP_INFO_TABLE_NAME))
{
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_FATAL,"mrl_del_back_info","Maat succeed to del mrl_ip item[rule_id:%d,ip_addr: %s]",cfg_id,back_ip);
+ MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"mrl_del_back_info","Maat succeed to del mrl_ip item[rule_id:%d,ip_addr: %s]",cfg_id,back_ip);
}
else
{
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_FATAL,"mrl_del_back_info","Maat fail to del mrl_ip item %s",back_ip);
+ MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"mrl_del_back_info","Maat fail to del mrl_ip item %s",back_ip);
}
}
else
@@ -1001,20 +991,20 @@ void mrl_ip_info_update_cb(int table_id, const char *table_line, void *u_para)
if(ret == MRL_HTABLE_ADD_SUCCESS)
{
global_stat.mrl_ip_num ++;
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"vxlan_info_update_cb","ht_mrl_ip_info succeed to add mrl_ip_info key[ip_addr:%s]!",mrl_ip_item->back_ip);
+ MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"mrl_ip_info_update_cb","ht_mrl_ip_info succeed to add mrl_ip_info key[ip_addr:%s]!",mrl_ip_item->back_ip);
}
else
{
if(ret == MRL_HTABLE_ADD_DUPLICATE)
{
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"vxlan_info_update_cb","the mrl_ip_info key[ip_addr:%s] is duplicated in ht_mrl_ip_info.",mrl_ip_item->back_ip);
+ MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"mrl_ip_info_update_cb","the mrl_ip_info key[ip_addr:%s] is duplicated in ht_mrl_ip_info.",mrl_ip_item->back_ip);
free(mrl_ip_item);
mrl_ip_item = NULL;
}
else
{
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_FATAL,"vxlan_info_update_cb","ht_mrl_ip_info fail to insert the mrl_ip_info key[ip_addr:%s], ret is %d",mrl_ip_item->back_ip,ret);
+ MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_FATAL,"mrl_ip_info_update_cb","ht_mrl_ip_info fail to insert the mrl_ip_info key[ip_addr:%s], ret is %d",mrl_ip_item->back_ip,ret);
free(mrl_ip_item);
mrl_ip_item = NULL;
assert(0);
@@ -1161,16 +1151,30 @@ void mrl_construct_ir_mrl_ip(int mrl_ip_config_id, const char* back_ip, int back
void mrl_deal_snat_detect(struct mrl_nominee* snat_nominee, uint64_t link_identity)
{
- struct mrl_snat_candidate snat_candidate;
- memset(&snat_candidate,0,sizeof(struct mrl_snat_candidate));
+ int ret = 0;
+ struct mrl_snat_candidate* snat_candidate = NULL;
+
if(MESA_htable_search_cb(mrl_instance.ht_snat_candidate, (const unsigned char *)snat_nominee->ip_addr, MRL_STR_IP_LEN,NULL,NULL,NULL) == NULL)
{
- mrl_create_snat_candidate(&snat_candidate,snat_nominee);
- if(Maat_set_snat_candidate(mrl_instance.dynamic_feather,&snat_candidate))
+ snat_candidate = (struct mrl_snat_candidate* )calloc(1,sizeof(struct mrl_snat_candidate));
+ global_stat.malloc_memory += sizeof(struct mrl_snat_candidate);
+ mrl_create_snat_candidate(snat_candidate,snat_nominee);
+ ret = MESA_htable_add(mrl_instance.ht_snat_candidate, (const unsigned char *)snat_candidate->ip_addr, MRL_STR_IP_LEN, snat_candidate);
+ if(ret < 0)
{
- if(mrl_construct_ir_vxlan_info(snat_candidate.config_id,link_identity,snat_candidate.ip_addr,MRL_SNAT_BACK_TYPE))
+ MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_FATAL,"mrl_deal_snat_detect","fail to add the snat_candidate key[ip_addr:%s] into ht_vxlan_info! ret is %d",snat_candidate->ip_addr,ret);
+ free(snat_candidate);
+ snat_candidate = NULL;
+ assert(0);
+ }
+ else
+ {
+ if(Maat_set_snat_candidate(mrl_instance.dynamic_feather,snat_candidate))
{
- mrl_construct_ir_mrl_ip(snat_candidate.config_id,snat_candidate.ip_addr,MRL_SNAT_BACK_TYPE);
+ if(mrl_construct_ir_vxlan_info(snat_candidate->config_id,link_identity,snat_candidate->ip_addr,MRL_SNAT_BACK_TYPE))
+ {
+ mrl_construct_ir_mrl_ip(snat_candidate->config_id,snat_candidate->ip_addr,MRL_SNAT_BACK_TYPE);
+ }
}
}
}