diff options
| author | lijie <[email protected]> | 2019-01-22 22:47:55 +0800 |
|---|---|---|
| committer | lijie <[email protected]> | 2019-01-22 22:47:55 +0800 |
| commit | 75f6f2e2237a9e1254d3d14f945ddba7c8dc5b81 (patch) | |
| tree | 0be97ba3b93ee037237f1f4fb0a42772b3e27846 | |
| parent | 8fd0a24f86624b3c985038e60887b32e41b0559e (diff) | |
修改ip location问题,修复删除dnat_policy时nominee_count计数错误v2.0.2
| -rw-r--r-- | bin/conf/Kazakhstan_v4.mmdb | bin | 0 -> 9707525 bytes | |||
| -rw-r--r-- | bin/conf/all_ip_info_v4.mmdb | bin | 0 -> 148263034 bytes | |||
| -rw-r--r-- | bin/conf/all_ip_only_coun_v4.mmdb | bin | 4496685 -> 0 bytes | |||
| -rw-r--r-- | bin/conf/mrl.conf | 2 | ||||
| -rw-r--r-- | bin/conf/table_info.conf | 2 | ||||
| -rw-r--r-- | include/mrl_utils.h | 1 | ||||
| -rw-r--r-- | src/Makefile | 2 | ||||
| -rw-r--r-- | src/mrl_io.cpp | 6 | ||||
| -rw-r--r-- | src/mrl_main.cpp | 2 | ||||
| -rw-r--r-- | src/mrl_redis.cpp | 54 |
10 files changed, 37 insertions, 32 deletions
diff --git a/bin/conf/Kazakhstan_v4.mmdb b/bin/conf/Kazakhstan_v4.mmdb Binary files differnew file mode 100644 index 0000000..ccbe14f --- /dev/null +++ b/bin/conf/Kazakhstan_v4.mmdb diff --git a/bin/conf/all_ip_info_v4.mmdb b/bin/conf/all_ip_info_v4.mmdb Binary files differnew file mode 100644 index 0000000..a5d5bd9 --- /dev/null +++ b/bin/conf/all_ip_info_v4.mmdb diff --git a/bin/conf/all_ip_only_coun_v4.mmdb b/bin/conf/all_ip_only_coun_v4.mmdb Binary files differdeleted file mode 100644 index 6c52c52..0000000 --- a/bin/conf/all_ip_only_coun_v4.mmdb +++ /dev/null diff --git a/bin/conf/mrl.conf b/bin/conf/mrl.conf index 8c02639..5b28a29 100644 --- a/bin/conf/mrl.conf +++ b/bin/conf/mrl.conf @@ -30,7 +30,7 @@ ht_max_element_num=0 ht_mutex_num=5
[IP_LOCATION_INFO]
-ip_location_enable=0
+ip_location_enable=1
ip_location_level=0
ip_location_name=Kazakhstan
[LINK_INFO]
diff --git a/bin/conf/table_info.conf b/bin/conf/table_info.conf index a077928..97fe6a3 100644 --- a/bin/conf/table_info.conf +++ b/bin/conf/table_info.conf @@ -17,7 +17,7 @@ #id name type src_charset dst_charset do_merge cross_cache quick_mode
0 IR_NOMINEE_IP plugin 5 --
1 IR_CANDIDATE_IP plugin 6 --
-2 IR_DNAT_POLICY plugin 11 --
+2 IR_DNAT_POLICY plugin 12 --
3 IR_VXLAN_INFO plugin 5 --
4 IR_MRL_IP_INFO plugin 5 --
5 IR_DNAT_CANDIDATE_IP plugin 5 --
\ No newline at end of file diff --git a/include/mrl_utils.h b/include/mrl_utils.h index 43368cd..56d2759 100644 --- a/include/mrl_utils.h +++ b/include/mrl_utils.h @@ -24,6 +24,7 @@ #define MRL_DATE_LEN 50
#define MRL_LOCATION_NAME_LEN 20
+
#define MRL_MAX_PATH 50
#define MRL_IPV4_TYPE 4
diff --git a/src/Makefile b/src/Makefile index 0f9f9ae..db3549b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -39,4 +39,4 @@ install: cp $(TARGET) /home/mesasoft/mrl_run/plug/business/mrl
cp ../bin/conf/mrl.inf /home/mesasoft/mrl_run/plug/business/mrl
cp ../bin/conf/*.conf /home/mesasoft/mrl_run/mrl_conf/
- cp ../bin/conf/all_ip_only_coun_v4.mmdb /home/mesasoft/mrl_run/mrl_conf
+ cp ../bin/conf/*.mmdb /home/mesasoft/mrl_run/mrl_conf
diff --git a/src/mrl_io.cpp b/src/mrl_io.cpp index c14ac3e..2879108 100644 --- a/src/mrl_io.cpp +++ b/src/mrl_io.cpp @@ -281,7 +281,7 @@ void ht_nominee_iterate_cb(const uchar* key, uint size, void* data, void* user) struct mrl_nominee* nominee = (struct mrl_nominee*)data;
if(nominee!= NULL)
{
- MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"ht_nominee_iterate_cb","pending detect nominee ip is %s,nominee_type is %d",nominee->ip_addr,nominee->nominee_type);
+ MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"ht_nominee_iterate_cb","cur iterate nominee ip is %s,nominee_type is %d",nominee->ip_addr,nominee->nominee_type);
switch(nominee->nominee_type)
{
case MRL_SNAT_NOMINEE_TYPE:
@@ -542,7 +542,7 @@ void ht_dnat_policy_free_cb(void * data) {
MESA_handle_runtime_log(mrl_instance.mrl_log_handle, RLOG_LV_DEBUG,"ht_dnat_policy_free_cb","the dnat_policy item:"
"[config_id:%d,original_addr_type:%d,original_dest_ip:%s,original_dest_port:%s,original_protocol:%s,translated_user_type:%s,translated_user_id:%s,"
- "translated_dest_port:%s,do_log:%d,action:%d,addr_type:%d,service:%d,is_valid:%d,effective_range:%s,op_time:%s] in ht_dnat_policy is free",
+ "translated_dest_port:%s,do_log:%d,action:%d,service:%d,is_valid:%d,effective_range:%s,op_time:%s] in ht_dnat_policy is free",
dnat_policy->config_id,dnat_policy->original_addr_type,dnat_policy->original_dest_ip,dnat_policy->original_dest_port,dnat_policy->original_protocol,
dnat_policy->translated_user_type,dnat_policy->translated_user_id, dnat_policy->translated_dest_port,dnat_policy->do_log,dnat_policy->action,
dnat_policy->service,dnat_policy->is_valid,dnat_policy->effective_range, dnat_policy->op_time);
@@ -604,7 +604,7 @@ void ht_mrl_ip_info_free_cb(void * data) }
-//�ж��Ƿ���dnat���ݰ�
+
bool mrl_dnat_pkt_identify(struct streaminfo *mystream, struct mrl_tuple *tuple)
{
bool ret = false;
diff --git a/src/mrl_main.cpp b/src/mrl_main.cpp index ebad461..40ad9d4 100644 --- a/src/mrl_main.cpp +++ b/src/mrl_main.cpp @@ -185,7 +185,7 @@ extern "C" int mrl_init(void) mrl_socket_init();
- mrl_mmdb_init("./mrl_conf/all_ip_only_coun_v4.mmdb");
+ mrl_mmdb_init("./mrl_conf/Kazakhstan_v4.mmdb");
mrl_instance.ht_link_identity = mrl_htable_init((void *)ht_link_identity_free_cb);
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);
+ }
}
}
}
|
