diff options
| author | liuyang <[email protected]> | 2018-12-04 22:29:50 +0800 |
|---|---|---|
| committer | liuyang <[email protected]> | 2018-12-04 22:29:50 +0800 |
| commit | 58999736c83bc53aaf8ca23d40c97d2418b4e5bb (patch) | |
| tree | 5608cc36505babe0768e01149460b903f7ed6494 | |
| parent | 8e3e5a7ad197ba0438a3feb76c7c12becc647060 (diff) | |
maat_redis支持配置port范围,例如12345-54321,kni.conf中变量名称不变
| -rw-r--r-- | kni_comm.c | 3 | ||||
| -rw-r--r-- | kni_entry.c | 71 | ||||
| -rw-r--r-- | kni_entry.h | 1 | ||||
| -rw-r--r-- | kni_intercept.c | 2 | ||||
| -rw-r--r-- | kni_replace.c | 5 |
5 files changed, 66 insertions, 16 deletions
@@ -4,6 +4,7 @@ #include <unistd.h> #include <ctype.h> #include <stdarg.h> +#include <assert.h> #include <arpa/inet.h> #include "stream.h" #include "MESA_prof_load.h" @@ -602,7 +603,7 @@ int kni_get_service_defined(int new_action,struct Maat_rule_t* maat_result,struc pmeinfo->cfg_id = maat_result->config_id; pmeinfo->ser_def_len = maat_result->serv_def_len; - assert(sizeof(pmeinfo->service_defined) > maat_result->serv_def_len); + assert((int)sizeof(pmeinfo->service_defined) > maat_result->serv_def_len); memcpy(pmeinfo->service_defined,maat_result->service_defined,maat_result->serv_def_len); } diff --git a/kni_entry.c b/kni_entry.c index 74cf484..390a8cf 100644 --- a/kni_entry.c +++ b/kni_entry.c @@ -12,7 +12,7 @@ -int g_kni_version_VERSION_20181129; +int g_kni_version_VERSION_20181204; struct kni_var_comm g_kni_comminfo; struct kni_var_struct g_kni_structinfo; @@ -548,7 +548,7 @@ char kni_first_tcpdata(const struct streaminfo* pstream,const void* a_packet,str pmeinfo->protocol=kni_protocol_identify(pstream,a_packet,data,datalen,domain,&domain_len); - assert(domain_len<sizeof(domain)); + assert(domain_len<(int)sizeof(domain)); if((pmeinfo->protocol==KNI_FLAG_HTTP) ||(pmeinfo->protocol==KNI_FLAG_SSL)) { if(domain_len != 0) @@ -1296,8 +1296,11 @@ int init_kni_dyn_maat_info() char redis_ip[INET_ADDRSTRLEN]={0}; int redis_db_index=0; - int redis_port=0; - unsigned short redis_port_real=0; + int redis_port_begin=0,redis_port_end=0; + unsigned short redis_port_select=0; + + + char redis_port_range[KNI_CONF_MAXLEN]={0}; int scandir_interval=KNI_SCANDIR_INTERVAL; int effect_interval=KNI_EFFECT_INTERVAL; @@ -1311,9 +1314,10 @@ int init_kni_dyn_maat_info() MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_scandir_interval",&scandir_interval,KNI_SCANDIR_INTERVAL); MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_effect_interval",&effect_interval,KNI_EFFECT_INTERVAL); MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_db_index",&redis_db_index,0); - MESA_load_profile_int_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_port",(int*)&redis_port); +// MESA_load_profile_int_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_port",(int*)&redis_port); MESA_load_profile_string_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_server",redis_ip,INET_ADDRSTRLEN); + MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_redis_port",redis_port_range,sizeof(redis_port_range),"6379"); MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_stat_file_path",stat_file_dir,KNI_CONF_MAXLEN,KNI_DYN_STAT_FILEPATH); MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_DYNMAAT_MODE,(char*)"dyn_table_info_path",table_info_path,KNI_CONF_MAXLEN,KNI_TABLEINFO_PATH); @@ -1331,9 +1335,29 @@ int init_kni_dyn_maat_info() } else if(maat_readconf_mode==KNI_READCONF_REDIS) { - redis_port_real=(unsigned short)redis_port; + + ret=sscanf(redis_port_range,"%d-%d", &redis_port_begin, &redis_port_end); + if(ret==1) + { + redis_port_select=(unsigned short)redis_port_begin; + } + else if(ret==2) + { + srand(time(NULL)); + redis_port_select=(unsigned short)(redis_port_begin+rand()%(redis_port_end-redis_port_begin)); + } + else + { + MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"Invalid redis port range %s, MAAT init failed.", redis_port_range); + return -1; + } + + + + MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"dynmic_maat_redis select port:%d",redis_port_select); + Maat_set_feather_opt(g_kni_maatinfo.ipd_dyn_maat_feather,MAAT_OPT_REDIS_IP,(void*)redis_ip,strlen(redis_ip)+1); - Maat_set_feather_opt(g_kni_maatinfo.ipd_dyn_maat_feather,MAAT_OPT_REDIS_PORT,(void*)&redis_port_real,sizeof(unsigned short)); + Maat_set_feather_opt(g_kni_maatinfo.ipd_dyn_maat_feather,MAAT_OPT_REDIS_PORT,(void*)&redis_port_select,sizeof(unsigned short)); Maat_set_feather_opt(g_kni_maatinfo.ipd_dyn_maat_feather,MAAT_OPT_REDIS_INDEX,(void*)&redis_db_index,sizeof(int)); } @@ -1369,8 +1393,8 @@ int init_kni_static_maat_info() char redis_ip[INET_ADDRSTRLEN]={0}; int redis_db_index=0; - int redis_port=0; - unsigned short redis_port_real=0; + int redis_port_begin=0,redis_port_end=0; + unsigned short redis_port_select=0; int scandir_interval=KNI_SCANDIR_INTERVAL; int effect_interval=KNI_EFFECT_INTERVAL; @@ -1380,19 +1404,24 @@ int init_kni_static_maat_info() char full_cfg_dir[KNI_CONF_MAXLEN]={0}; char inc_cfg_dir[KNI_CONF_MAXLEN]={0}; + char redis_port_range[KNI_CONF_MAXLEN]={0}; + MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"maat_readconf_mode",&maat_readconf_mode,KNI_READCONF_IRIS); MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"scandir_interval",&scandir_interval,KNI_SCANDIR_INTERVAL); MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"effect_interval",&effect_interval,KNI_EFFECT_INTERVAL); MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_db_index",&redis_db_index,0); - MESA_load_profile_int_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_port",(int*)&redis_port); +// MESA_load_profile_int_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_port",(int*)&redis_port); + + MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_port",redis_port_range,sizeof(redis_port_range),"6379"); MESA_load_profile_string_nodef((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"redis_server",redis_ip,INET_ADDRSTRLEN); MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"table_info_path",table_info_path,KNI_CONF_MAXLEN,KNI_TABLEINFO_PATH); MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"inc_cfg_dir",inc_cfg_dir,KNI_CONF_MAXLEN,KNI_INCCFG_FILEPATH); MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"stat_file_path",stat_file_dir,KNI_CONF_MAXLEN,KNI_STAT_FILEPATH); MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_STATIC_MAAT_MODE,(char*)"full_cfg_dir",full_cfg_dir,KNI_CONF_MAXLEN,KNI_FULLCFG_FILEPATH); + g_kni_maatinfo.maat_feather=Maat_feather(g_iThreadNum,table_info_path,g_kni_comminfo.logger); if(g_kni_maatinfo.maat_feather==NULL) @@ -1412,9 +1441,27 @@ int init_kni_static_maat_info() } else if(maat_readconf_mode==KNI_READCONF_REDIS) { - redis_port_real=(unsigned short)redis_port; + + ret=sscanf(redis_port_range,"%d-%d", &redis_port_begin, &redis_port_end); + if(ret==1) + { + redis_port_select=(unsigned short)redis_port_begin; + } + else if(ret==2) + { + srand(time(NULL)); + redis_port_select=(unsigned short)(redis_port_begin+rand()%(redis_port_end-redis_port_begin)); + } + else + { + MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"Invalid redis port range %s, MAAT init failed.", redis_port_range); + return -1; + } + + + MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_INIT,"static_maat_redis select port:%d",redis_port_select); Maat_set_feather_opt(g_kni_maatinfo.maat_feather,MAAT_OPT_REDIS_IP,(void*)redis_ip,strlen(redis_ip)+1); - Maat_set_feather_opt(g_kni_maatinfo.maat_feather,MAAT_OPT_REDIS_PORT,(void*)&redis_port_real,sizeof(unsigned short)); + Maat_set_feather_opt(g_kni_maatinfo.maat_feather,MAAT_OPT_REDIS_PORT,(void*)&redis_port_select,sizeof(unsigned short)); Maat_set_feather_opt(g_kni_maatinfo.maat_feather,MAAT_OPT_REDIS_INDEX,(void*)&redis_db_index,sizeof(int)); } diff --git a/kni_entry.h b/kni_entry.h index 28ac613..4571d4e 100644 --- a/kni_entry.h +++ b/kni_entry.h @@ -12,6 +12,7 @@ #include "kni_comm.h" #include "kni_intercept.h" #include "kni_ratelimit.h" +#include "kni_utils.h" #ifndef TH_FIN diff --git a/kni_intercept.c b/kni_intercept.c index 4765984..3105e8a 100644 --- a/kni_intercept.c +++ b/kni_intercept.c @@ -1001,7 +1001,7 @@ char tun_write_data(int fd, const char* send_buf, size_t send_buflen,struct stre MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_WRITETUN,"write() error %d, %s",errno,strerror(errno)); ret=APP_STATE_DROPPKT|APP_STATE_DROPME; } - else if(succ_sendlen<send_buflen) + else if(succ_sendlen<(int)send_buflen) { kni_htable_del(pstream,(const void*)send_buf); diff --git a/kni_replace.c b/kni_replace.c index dec5d61..92193d2 100644 --- a/kni_replace.c +++ b/kni_replace.c @@ -1,6 +1,7 @@ #include <stdio.h> #include <string.h> #include <stdlib.h> +#include <assert.h> #include "kni_replace.h" #include "kni_entry.h" @@ -48,11 +49,11 @@ int kni_get_replace(int cfg_id,int ser_def_len,char* service_defined,struct kni_ replace_len = strlen(replace); replace_info->original_len = replace - original -1; - assert(sizeof(replace_info->find)>=replace_info->original_len); + assert((int)sizeof(replace_info->find)>=replace_info->original_len); memcpy(replace_info->find,original,replace_info->original_len); replace_info->replace_len = replace_len; - assert(sizeof(replace_info->replace)>=replace_info->replace_len); + assert((int)sizeof(replace_info->replace)>=replace_info->replace_len); memcpy(replace_info->replace,replace,replace_info->replace_len); return 0; |
