更改field stat输出,输出内容详见kni wiki日志说明

This commit is contained in:
liuyang
2018-12-10 17:45:19 +08:00
parent 98e1003d6f
commit 94e56dc092
7 changed files with 182 additions and 120 deletions

View File

@@ -14,10 +14,10 @@
#include "kni_comm.h"
/*
const char *g_kni_fs2_name[FS2_COLUMN_NUM] =
{
"TAPALL",
"TCPALL",
"UDP",
"IP",
"WHITE_IP",
@@ -30,13 +30,13 @@ const char *g_kni_fs2_name[FS2_COLUMN_NUM] =
"NOT_PROC",
"TUN_WRITE",
"TUN_READ",
"SEND_MASION",
"SEND_MARSIO",
"CLIENT_HELLO",
"SSL_SNI(P)",
"D_IPV6_OPT",
"D_NOT_HTABLE",
"D_NOT_IPV4/6",
"D_NOT_IPV4/6",
"D_NOT_IPV4/6_S",
"D_NOT_IPV4/6_T",
"D_E_ADDHTABLE",
"D_OTHER",
"REPR_TOTAL",
@@ -61,7 +61,7 @@ const char *g_kni_fs2_name[FS2_COLUMN_NUM] =
"HTABLE_ADD",
"HTABLE_DEL"
};
*/
char* kni_memncasemem(const char *strsrc,int len1,const char *substr,int len2)
{
@@ -161,10 +161,9 @@ int kni_log_info(char* module,const struct layer_addr* addr,unsigned short proto
//TODO:LEVEL
int kni_log_debug(int level,char* module,const void* a_packet,const char* format,...)
{
// if((a_packet == NULL))
if((a_packet == NULL) || (level<g_kni_comminfo.logger_level))
{
return 0;
}
@@ -486,7 +485,7 @@ int kni_filestate2_set(int thread_seq,enum kni_FS_COLUME colum_index,int bytes,i
int kni_filestate2_init()
{
int i=0;
// int i=0;
// int j=0;
int value=1;
unsigned int fs2_sport=0;
@@ -510,11 +509,61 @@ int kni_filestate2_init()
FS_set_para(g_kni_fs2_info.handler, STATS_SERVER_IP, fs2_sip, strlen(fs2_sip)+1);
FS_set_para(g_kni_fs2_info.handler, STATS_SERVER_PORT,&fs2_sport,sizeof(int));
}
/*
for(i=0;i<FS2_COLUMN_NUM;i++)
{
g_kni_fs2_info.column_id[i]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,g_kni_fs2_name[i]);
}
*/
g_kni_fs2_info.field_id[FS_PENDING]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_pending");
g_kni_fs2_info.field_id[FS_CLOSE_TIMEOUT]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_cls_to");
g_kni_fs2_info.field_id[FS_CLOSE_FIN]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_cls_fin");
g_kni_fs2_info.field_id[FS_CLOSE_DROPME]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_cls_dropme");
g_kni_fs2_info.field_id[FS_HTTP]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_http");
g_kni_fs2_info.field_id[FS_SSL]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_ssl");
g_kni_fs2_info.field_id[FS_CLIENT_HELLO]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_hello");
g_kni_fs2_info.field_id[FS_SNI]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_sni");
g_kni_fs2_info.field_id[FS_NOT_HTTP_SSL]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_not_identify");
g_kni_fs2_info.field_id[FS_WHITELIST]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_whitelist");
g_kni_fs2_info.field_id[FS_INTERCEPT]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_intercept");
g_kni_fs2_info.field_id[FS_RATELIMIT]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_ratelimit");
g_kni_fs2_info.field_id[FS_NOT_HIT]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"link_not_hit");
g_kni_fs2_info.field_id[FS_REPAIR_TOTAL]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"repair_total");
g_kni_fs2_info.field_id[FS_REPAIR_SOCK_ERR]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"repair_sock_err");
g_kni_fs2_info.field_id[FS_REPAIR_SET_ERR]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"repair_set_err");
g_kni_fs2_info.field_id[FS_REPAIR_JOINLQ_ERR]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"repair_e_joinq");
g_kni_fs2_info.field_id[FS_REPAIR_SEND_SUCC]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"repair_send");
g_kni_fs2_info.field_id[FS_REPAIR_SEND_ERR]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"repair_send_err");
g_kni_fs2_info.field_id[FS_PKT_ADD_LQ_SUCC]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"pkt_qin");
g_kni_fs2_info.field_id[FS_PKT_ADD_LQ_ERR]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"pkt_qin_err");
g_kni_fs2_info.field_id[FS_PKT_GET_LQ_SUCC]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"pkt_qout");
g_kni_fs2_info.field_id[FS_PKT_GET_LQ_ERR]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"pkt_qout_err");
g_kni_fs2_info.field_id[FS_WR_PKTS]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"wr_pkts");
g_kni_fs2_info.field_id[FS_WR_ERR_PKTS]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"wr_err_pkts");
g_kni_fs2_info.field_id[FS_WR_BYTES]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"wr_bytes");
g_kni_fs2_info.field_id[FS_RD_PKTS]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"rd_pkts");
g_kni_fs2_info.field_id[FS_RD_BYTES]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"rd_bytes");
g_kni_fs2_info.field_id[FS_RX_PKTS]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"rx_pkts");
g_kni_fs2_info.field_id[FS_RX_BYTES]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"rx_bytes");
g_kni_fs2_info.field_id[FS_TX_PKTS]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"tx_pkts");
g_kni_fs2_info.field_id[FS_TX_BYTES]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"tx_bytes");
g_kni_fs2_info.field_id[FS_DROP_IPV6OPT]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"d_ipv6_opt");
g_kni_fs2_info.field_id[FS_DROP_NOTIN_HTABLE]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"d_notin_htab");
g_kni_fs2_info.field_id[FS_DROP_NOTIPV46_SAPP]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"d_not_ipv46_s");
g_kni_fs2_info.field_id[FS_DROP_NOTIPV46_TUN]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"d_not_ipv46_t");
g_kni_fs2_info.field_id[FS_DROP_ADDHTABLE_ERROR]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"d_add_htal_err");
g_kni_fs2_info.field_id[FS_PMENUM]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"pme_num");
g_kni_fs2_info.field_id[FS_REPLAY_WINDOW]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"replay_win");
g_kni_fs2_info.field_id[FS_HTABLE_ADD]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"add_htab");
g_kni_fs2_info.field_id[FS_HTABLE_DEL]=FS_register(g_kni_fs2_info.handler, FS_STYLE_FIELD, FS_CALC_CURRENT,"del_htab");
g_kni_fs2_info.metric_tun_read=FS_register_histogram(g_kni_fs2_info.handler, FS_CALC_CURRENT, "tun_read(us)" ,1,1000000,2);
g_kni_fs2_info.metric_forward=FS_register_histogram(g_kni_fs2_info.handler, FS_CALC_CURRENT, "forward(us)" ,1,1000000,2);
g_kni_fs2_info.metric_sapp_proc=FS_register_histogram(g_kni_fs2_info.handler, FS_CALC_CURRENT, "sapp_proc(us)" ,1,1000000,2);
@@ -551,7 +600,7 @@ void* kni_filestat2(void* arg)
column_value[i]+=g_kni_fs2_info.column_value_pkt[j][i];
}
FS_operate(g_kni_fs2_info.handler,g_kni_fs2_info.column_id[i], 0,FS_OP_SET,column_value[i]);
FS_operate(g_kni_fs2_info.handler,g_kni_fs2_info.field_id[i], 0,FS_OP_SET,column_value[i]);
}
sleep(1);

View File

@@ -7,55 +7,55 @@
#endif
#define FS2_COLUMN_NUM 43
//#define FS2_COLUMN_NUM 44
#define FS2_APPNAME "KNI"
enum kni_FS_COLUME
{
COLUME_TCPALL_ENTRY=0,
COLUME_UDP_ENTRY,
COLUME_IP_ENTRY,
COLUME_WITELIST_IP,
COLUME_WITELIST_DOMAIN,
COLUME_INTERCEPT,
COLUME_RATELIMIT,
COLUME_REPLACE,
COLUME_HTTP,
COLUME_SSL,
COLUME_TCP_NOT_HTTPSSL,
COLUME_TUN_WRITE,
COLUME_TUN_READ,
COLUME_SEND_PKT,
COLUME_CLIENTHELLO,
COLUME_SNI,
COLUME_DROP_IPV6OPT,
COLUME_DROP_NOIN_HTABLE,
COLUME_DROP_NOTIPV46_SAPP,
COLUME_DROP_NOTIPV46_TUN,
COLUME_DROP_ADDHTABLE_ERROR,
COLUME_DROPPKT_OTHER,
COLUME_TCPREPAIR_TOTAL,
COLUME_TCPREPAIR_SOCKET_ERR,
COLUME_TCPREPAIR_ERROR,
COLUME_TCPREPAIR_JOINLQ_ERR,
COLUME_TCPREPAIR_GETLQ_ERR,
COLUME_TCPREPAIR_SEND_SUCC,
COLUME_TCPREPAIR_SEND_ERR,
COLUME_ADD_LQUEUE_SUCC,
COLUME_ADD_LQUEUE_ERR,
COLUME_GET_LQUEUE_SUCC,
COLUME_GET_LQUEUE_ERR,
COLUME_WRITE_TUN_SUCC,
COLUME_WRITE_TUN_ERR,
COLUME_PENDING,
COLUME_CLOSE_TIMEOUT,
COLUME_CLOSE_FIN,
COLUME_CLOSE_DROPME,
COLUME_PMENUM,
COLUME_REPLAY_WINDOW,
COLUME_HTABLE_ADD,
COLUME_HTABLE_DEL
FS_PENDING=0,
FS_CLOSE_TIMEOUT,
FS_CLOSE_FIN,
FS_CLOSE_DROPME,
FS_HTTP,
FS_SSL,
FS_CLIENT_HELLO,
FS_SNI,
FS_NOT_HTTP_SSL,
FS_WHITELIST,
FS_INTERCEPT,
FS_RATELIMIT,
FS_NOT_HIT,
FS_REPAIR_TOTAL,
FS_REPAIR_SOCK_ERR,
FS_REPAIR_SET_ERR,
FS_REPAIR_JOINLQ_ERR,
FS_REPAIR_SEND_SUCC,
FS_REPAIR_SEND_ERR,
FS_PKT_ADD_LQ_SUCC,
FS_PKT_ADD_LQ_ERR,
FS_PKT_GET_LQ_SUCC,
FS_PKT_GET_LQ_ERR,
FS_WR_PKTS,
FS_WR_ERR_PKTS,
FS_WR_BYTES,
FS_RD_PKTS,
FS_RD_BYTES,
FS_RX_PKTS,
FS_RX_BYTES,
FS_TX_PKTS,
FS_TX_BYTES,
FS_DROP_IPV6OPT,
FS_DROP_NOTIN_HTABLE,
FS_DROP_NOTIPV46_SAPP,
FS_DROP_NOTIPV46_TUN,
FS_DROP_ADDHTABLE_ERROR,
FS_PMENUM,
FS_REPLAY_WINDOW,
FS_HTABLE_ADD,
FS_HTABLE_DEL,
FS2_COLUMN_NUM
};
@@ -63,7 +63,7 @@ enum kni_FS_COLUME
struct kni_fs2_info
{
screen_stat_handle_t handler;
int column_id[FS2_COLUMN_NUM];
int field_id[FS2_COLUMN_NUM];
unsigned long long column_value_pkt[KNI_MAX_THREADNUM][FS2_COLUMN_NUM];
unsigned long long column_value_bytes[KNI_MAX_THREADNUM][FS2_COLUMN_NUM];
int metric_tun_read;

View File

@@ -12,7 +12,7 @@
int g_kni_version_VERSION_20181207;
int g_kni_version_VERSION_20181210;
struct kni_var_comm g_kni_comminfo;
struct kni_var_struct g_kni_structinfo;
@@ -150,7 +150,7 @@ int kni_htable_del(const struct streaminfo* pstream,const void* a_packet)
}
else
{
kni_filestate2_set(pstream->threadnum,COLUME_HTABLE_DEL,0,1);
kni_filestate2_set(pstream->threadnum,FS_HTABLE_DEL,0,1);
}
}
else
@@ -222,7 +222,7 @@ int kni_htable_add(const struct streaminfo* pstream,const void* a_packet,struct
}
else
{
kni_filestate2_set(pstream->threadnum,COLUME_HTABLE_ADD,0,1);
kni_filestate2_set(pstream->threadnum,FS_HTABLE_ADD,0,1);
}
}
else
@@ -375,7 +375,7 @@ int kni_judge_ssl(int thread_seq,char* tcp_data,int tcp_datalen,char* sni,int* s
ssl_body_len+=1;
*clienthello_flag = 1;
kni_filestate2_set(thread_seq,COLUME_CLIENTHELLO,0,1);
kni_filestate2_set(thread_seq,FS_CLIENT_HELLO,0,1);
// memcpy(&len_in_body,&ssl_body[ssl_body_len],3);
@@ -430,7 +430,7 @@ int kni_judge_ssl(int thread_seq,char* tcp_data,int tcp_datalen,char* sni,int* s
if(type_in_extension==SSL_EXTENSION_TYPE_SNI)
{
*sni_flag = 1;
kni_filestate2_set(thread_seq,COLUME_SNI,0,1);
kni_filestate2_set(thread_seq,FS_SNI,0,1);
if(ext_len>KNI_SNI_MAXLEN)
{
@@ -486,16 +486,17 @@ int kni_protocol_identify(const struct streaminfo* pstream,const void* a_packet,
if(kni_judge_http(pstream,domain,domain_len)==1)
{
kni_filestate2_set(pstream->threadnum,COLUME_HTTP,0,1);
kni_filestate2_set(pstream->threadnum,FS_HTTP,0,1);
return KNI_FLAG_HTTP;
}
else if(kni_judge_ssl(pstream->threadnum,tcp_data,tcp_datalen,domain,domain_len,&clienthello_flag,&sni_flag)==KNI_FLAG_SSL)
{
kni_filestate2_set(pstream->threadnum,COLUME_SSL,0,1);
kni_filestate2_set(pstream->threadnum,FS_SSL,0,1);
return KNI_FLAG_SSL;
}
else if((clienthello_flag == 1)&&(sni_flag == 0))
{
kni_filestate2_set(pstream->threadnum,FS_SSL,0,1);
kni_log_debug(RLOG_LV_DEBUG,(char*)"SSL_IDENTIFY",(void*)a_packet,(char*)"this ssl has client_hello,but no sni!");
return KNI_FLAG_SSL;
}
@@ -560,14 +561,14 @@ char kni_first_tcpdata(const struct streaminfo* pstream,const void* a_packet,str
switch(pmeinfo->action)
{
case KNI_ACTION_WHITELIST:
kni_filestate2_set(pstream->threadnum,COLUME_WITELIST_DOMAIN,0,1);
kni_filestate2_set(pstream->threadnum,FS_WHITELIST,0,1);
kni_log_info((char*)KNI_MODULE_INFO,&(pstream->addr),pmeinfo->protocol,domain,(char*)"WHITE_LIST_DOMAIN",(char*)"BYPASS",pmeinfo);
pmeinfo->protocol=KNI_FLAG_NOTPROC;
return ret;
case KNI_ACTION_RATELIMIT:
kni_filestate2_set(pstream->threadnum,COLUME_RATELIMIT,0,1);
kni_filestate2_set(pstream->threadnum,FS_RATELIMIT,0,1);
kni_log_info((char*)KNI_MODULE_INFO,&(pstream->addr),pstream->type,NULL,(char*)"RATELIMITE",(char*)"RATELIMITE",pmeinfo);
ret = kni_process_ratelimit(pstream->threadnum,a_packet,pmeinfo);
return ret;
@@ -576,6 +577,7 @@ char kni_first_tcpdata(const struct streaminfo* pstream,const void* a_packet,str
case KNI_ACTION_HALFHIT:
if(g_kni_switch_info.maat_default_mode==KNI_DEFAULT_MODE_BYPASS)
{
kni_filestate2_set(pstream->threadnum,FS_NOT_HIT,0,1);
kni_log_info((char*)KNI_MODULE_INFO,&(pstream->addr),pmeinfo->protocol,domain,(char*)"NOT_HIT",(char*)"BYPASS",pmeinfo);
pmeinfo->protocol=KNI_FLAG_NOTPROC;
pmeinfo->action = KNI_ACTION_NONE;
@@ -592,12 +594,12 @@ char kni_first_tcpdata(const struct streaminfo* pstream,const void* a_packet,str
}
kni_filestate2_set(pstream->threadnum,COLUME_INTERCEPT,0,1);
kni_filestate2_set(pstream->threadnum,FS_INTERCEPT,0,1);
if(kni_htable_add(pstream,a_packet,pmeinfo) < 0)
{
pmeinfo->action = KNI_ACTION_NOTPROC;
kni_filestate2_set(pstream->threadnum,COLUME_DROP_ADDHTABLE_ERROR,0,1);
kni_filestate2_set(pstream->threadnum,FS_DROP_ADDHTABLE_ERROR,0,1);
return ret;
}
@@ -629,7 +631,7 @@ char kni_first_tcpdata(const struct streaminfo* pstream,const void* a_packet,str
}
else
{
kni_filestate2_set(pstream->threadnum,COLUME_TCP_NOT_HTTPSSL,0,1);
kni_filestate2_set(pstream->threadnum,FS_NOT_HTTP_SSL,0,1);
kni_log_info((char*)KNI_MODULE_INFO,&(pstream->addr),pmeinfo->protocol,NULL,(char*)"NOT_HTTP_SSL",(char*)"BYPASS",pmeinfo);
}
@@ -671,16 +673,18 @@ char kni_pending_opstate(const struct streaminfo* pstream,struct kni_pme_info* p
}
else
{
kni_filestate2_set(thread_seq,COLUME_DROP_NOTIPV46_SAPP,0,1);
kni_filestate2_set(thread_seq,FS_DROP_NOTIPV46_SAPP,0,1);
return ret;
}
kni_filestate2_set(thread_seq,FS_RX_BYTES,0,iplen);
kni_scan_ip((struct ipaddr*)&(pstream->addr),thread_seq,protocol,pmeinfo);
if(pmeinfo->action==KNI_ACTION_WHITELIST)
{
kni_log_info((char*)KNI_MODULE_INFO,&(pstream->addr),0,NULL,(char*)"WHITE_LIST_IP",(char*)"BYPASS",pmeinfo);
kni_filestate2_set(thread_seq,COLUME_WITELIST_IP,0,1);
kni_filestate2_set(thread_seq,FS_WHITELIST,0,1);
return ret;
}
@@ -765,10 +769,12 @@ char kni_data_opstate(const struct streaminfo* pstream,struct kni_pme_info* pmei
}
else
{
kni_filestate2_set(thread_seq,COLUME_DROP_NOTIPV46_SAPP,0,1);
kni_filestate2_set(thread_seq,FS_DROP_NOTIPV46_SAPP,0,1);
return ret;
}
kni_filestate2_set(thread_seq,FS_RX_BYTES,0,iplen);
if(protocol== PROTO_TYPE_TCP)
{
if(pmeinfo->protocol==KNI_FLAG_UNKNOW)
@@ -792,7 +798,6 @@ char kni_data_opstate(const struct streaminfo* pstream,struct kni_pme_info* pmei
if((pmeinfo->action == KNI_ACTION_MONITOR) && ((pmeinfo->protocol==KNI_FLAG_HTTP)||(pmeinfo->protocol==KNI_FLAG_SSL)))
{
kni_filestate2_set(pstream->threadnum,COLUME_INTERCEPT,0,1);
if(g_kni_switch_info.write_listq_switch == 1)
{
if(pmeinfo->tun_index<0)
@@ -851,7 +856,7 @@ char kni_close_opstate(const struct streaminfo* pstream,struct kni_pme_info* pme
}
else
{
kni_filestate2_set(pstream->threadnum,COLUME_HTABLE_DEL,0,1);
kni_filestate2_set(pstream->threadnum,FS_HTABLE_DEL,0,1);
}
}
@@ -893,7 +898,7 @@ extern "C" char kni_udp_entry(const struct streaminfo* pstream,void** pme,int th
}
kni_filestate2_set(thread_seq,COLUME_UDP_ENTRY,0,1);
// kni_filestate2_set(thread_seq,FS_UDP,0,1);
switch(pstream->opstate)
{
@@ -947,19 +952,19 @@ extern "C" char kni_tcpall_entry(const struct streaminfo* pstream,void** pme,int
if((a_packet != NULL) && (ipv6_hdr->ip6_nex_hdr != NEXTHDR_TCP))
{
kni_filestate2_set(thread_seq,COLUME_DROP_IPV6OPT,0,1);
kni_filestate2_set(thread_seq,FS_DROP_IPV6OPT,0,1);
return ret;
}
}
kni_filestate2_set(thread_seq,COLUME_TCPALL_ENTRY,0,1);
kni_filestate2_set(thread_seq,FS_RX_PKTS,0,1);
switch(pstream->pktstate)
{
case OP_STATE_PENDING:
kni_filestate2_set(thread_seq,COLUME_PENDING,0,1);
kni_filestate2_set(thread_seq,COLUME_PMENUM,0,1);
kni_filestate2_set(thread_seq,FS_PENDING,0,1);
kni_filestate2_set(thread_seq,FS_PMENUM,0,1);
kni_init_pmeinfo(pme);
ret=kni_pending_opstate(pstream,(struct kni_pme_info*)*pme,thread_seq,a_packet,PROTO_TYPE_TCP);
break;
@@ -971,11 +976,11 @@ extern "C" char kni_tcpall_entry(const struct streaminfo* pstream,void** pme,int
case OP_STATE_CLOSE:
if(a_packet == NULL)
{
kni_filestate2_set(thread_seq,COLUME_CLOSE_TIMEOUT,0,1);
kni_filestate2_set(thread_seq,FS_CLOSE_TIMEOUT,0,1);
}
else
{
kni_filestate2_set(thread_seq,COLUME_CLOSE_FIN,0,1);
kni_filestate2_set(thread_seq,FS_CLOSE_FIN,0,1);
}
ret=kni_close_opstate(pstream,(struct kni_pme_info*)*pme,thread_seq,a_packet,PROTO_TYPE_TCP);
@@ -987,13 +992,13 @@ extern "C" char kni_tcpall_entry(const struct streaminfo* pstream,void** pme,int
if((ret&APP_STATE_DROPME)&&(*pme!=NULL))
{
kni_filestate2_set(thread_seq,COLUME_PMENUM,0,-1);
kni_filestate2_set(thread_seq,FS_PMENUM,0,-1);
kni_free_pmeinfo(pme);
*pme=NULL;
if(pstream->pktstate != OP_STATE_CLOSE)
{
kni_filestate2_set(thread_seq,COLUME_CLOSE_DROPME,0,1);
kni_filestate2_set(thread_seq,FS_CLOSE_DROPME,0,1);
}
}
@@ -1031,7 +1036,7 @@ extern "C" char kni_ipv4_entry(const struct streaminfo *pstream,unsigned char ro
return APP_STATE_DROPME;
}
kni_filestate2_set(thread_seq,COLUME_IP_ENTRY,0,1);
// kni_filestate2_set(thread_seq,FS_IP,0,1);
char ret = APP_STATE_GIVEME;
@@ -1091,7 +1096,7 @@ extern "C" char kni_ipv6_entry(const struct streaminfo *pstream,unsigned char ro
return ret;
}
kni_filestate2_set(thread_seq,COLUME_IP_ENTRY,0,1);
// kni_filestate2_set(thread_seq,FS_IP,0,1);
addr.addrtype = ADDR_TYPE_IPV6;
@@ -1267,15 +1272,15 @@ int init_kni_stat_htable()
int init_kni_runtimelog()
{
int logger_level;
// int logger_level;
char logger_filepath[KNI_CONF_MAXLEN]={0};
MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_MAIN_MODE,(char*)"logger_level",&logger_level,RLOG_LV_INFO);
MESA_load_profile_int_def((char*)KNI_CONF_FILENAME,(char*)KNI_MAIN_MODE,(char*)"logger_level",&(g_kni_comminfo.logger_level),RLOG_LV_INFO);
MESA_load_profile_string_def((char*)KNI_CONF_FILENAME,(char*)KNI_MAIN_MODE,(char*)"logger_filepath",logger_filepath,KNI_CONF_MAXLEN,"./log/kni.log");
g_kni_comminfo.logger=MESA_create_runtime_log_handle(logger_filepath,logger_level);
g_kni_comminfo.logger=MESA_create_runtime_log_handle(logger_filepath,g_kni_comminfo.logger_level);
if(g_kni_comminfo.logger==NULL)
{
printf("MESA_create_runtime_log_handle() error!exit...\n");

View File

@@ -214,7 +214,6 @@ struct kni_repaired_fds
int keyring;
};
//TODO
struct kni_inject_pkt
{
int addr_type;
@@ -268,6 +267,7 @@ struct kni_var_comm
int tun_threadnum;
int fd_domain;
int mark;
int logger_level;
char tun_name[KNI_CONF_MAXLEN];
char domain_path[KNI_CONF_MAXLEN];
char card_in[KNI_CONF_MAXLEN];

View File

@@ -117,7 +117,7 @@ int kni_unixdomain_sendinfo()
}
if(ret<0)
{
assert(0);
assert(0);
}
clock_gettime(CLOCK_MONOTONIC, &end);
@@ -131,13 +131,13 @@ int kni_unixdomain_sendinfo()
ret=kni_send_fds(g_kni_comminfo.fd_domain,to_send_fds);
if(ret<0) //check errno
{
kni_filestate2_set(0,COLUME_TCPREPAIR_SEND_ERR,0,2);
kni_filestate2_set(0,FS_REPAIR_SEND_ERR,0,2);
g_kni_comminfo.kni_mode_cur=KNI_MODE_BYPASS;
close(to_send_fds.client_fd);
close(to_send_fds.server_fd);
return -1;
}
kni_filestate2_set(0,COLUME_TCPREPAIR_SEND_SUCC,0,2);
kni_filestate2_set(0,FS_REPAIR_SEND_SUCC,0,2);
close(to_send_fds.client_fd);
close(to_send_fds.server_fd);
@@ -421,12 +421,12 @@ char kni_add_lqueue(int addrtype,int thread_seq,char* send_buf,int send_buflen,c
to_inject.buf = NULL;
ret=APP_STATE_DROPPKT|APP_STATE_DROPME;
kni_filestate2_set(thread_seq,COLUME_ADD_LQUEUE_ERR,0,1);
kni_filestate2_set(thread_seq,FS_PKT_ADD_LQ_ERR,0,1);
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_SENDFD,"kni_add_lqueue() error,ret:%d",ret);
return ret;
}
kni_filestate2_set(thread_seq,COLUME_ADD_LQUEUE_SUCC,0,1);
kni_filestate2_set(thread_seq,FS_PKT_ADD_LQ_SUCC,0,1);
return ret;
@@ -586,7 +586,7 @@ int kni_keepalive_replay_v6(struct stream_tuple4_v6* ipv6_addr,int iprever_flag,
datainfo->wndprob_flag[index]=1;
kni_filestate2_set(thread_seq,COLUME_REPLAY_WINDOW,0,1);
kni_filestate2_set(thread_seq,FS_REPLAY_WINDOW,0,1);
return 1;
@@ -646,7 +646,7 @@ int kni_keepalive_replay(struct stream_tuple4_v4* ipv4_addr,int iprever_flag,str
datainfo->wndprob_flag[index]=1;
kni_filestate2_set(thread_seq,COLUME_REPLAY_WINDOW,0,1);
kni_filestate2_set(thread_seq,FS_REPLAY_WINDOW,0,1);
return 1;
@@ -798,7 +798,8 @@ int kni_process_readdata(int thread_seq,int sendpkt_threadid,int buflen,char* bu
MESA_htable_search_cb(g_kni_structinfo.htable_to_tun_v4,(unsigned char*)&ipv4_addr,sizeof(struct stream_tuple4_v4),kni_readtun_htable_cb_v4,(void*)&args,&result);
if(result==1)
{
kni_filestate2_set(thread_seq,COLUME_SEND_PKT,0,1);
kni_filestate2_set(thread_seq,FS_TX_PKTS,0,1);
kni_filestate2_set(thread_seq,FS_TX_BYTES,0,buflen);
if(g_kni_switch_info.sendpkt_mode == 1)
{
@@ -812,7 +813,7 @@ int kni_process_readdata(int thread_seq,int sendpkt_threadid,int buflen,char* bu
else
{
kni_log_debug(RLOG_LV_FATAL,(char*)"kni_readtun_htable_cb_v4",buf,(const char*)"kni_readtun_htable_cb_v4 not found!");
kni_filestate2_set(thread_seq,COLUME_DROP_NOIN_HTABLE,0,1);
kni_filestate2_set(thread_seq,FS_DROP_NOTIN_HTABLE,0,1);
}
}
@@ -828,7 +829,8 @@ int kni_process_readdata(int thread_seq,int sendpkt_threadid,int buflen,char* bu
MESA_htable_search_cb(g_kni_structinfo.htable_to_tun_v6,(unsigned char*)&ipv6_addr,sizeof(struct stream_tuple4_v6),kni_readtun_htable_cb_v6,(void*)&args,&result);
if(result==1)
{
kni_filestate2_set(thread_seq,COLUME_SEND_PKT,0,1);
kni_filestate2_set(thread_seq,FS_TX_PKTS,0,1);
kni_filestate2_set(thread_seq,FS_TX_BYTES,0,buflen);
if(g_kni_switch_info.sendpkt_mode == 1)
{
@@ -842,13 +844,13 @@ int kni_process_readdata(int thread_seq,int sendpkt_threadid,int buflen,char* bu
}
else
{
kni_filestate2_set(thread_seq,COLUME_DROP_NOIN_HTABLE,0,1);
kni_filestate2_set(thread_seq,FS_DROP_NOTIN_HTABLE,0,1);
}
}
else
{
kni_filestate2_set(thread_seq,COLUME_DROP_NOTIPV46_TUN,0,1);
kni_filestate2_set(thread_seq,FS_DROP_NOTIPV46_TUN,0,1);
MESA_handle_runtime_log(g_kni_comminfo.logger,RLOG_LV_FATAL,KNI_MODULE_SENDPKT,"kni_readdata,not ipv4 and not ipv6!");
}
@@ -873,7 +875,7 @@ int kni_process_writedata(int thread_seq)
}
else if(ret<0)
{
kni_filestate2_set(thread_seq,COLUME_GET_LQUEUE_ERR,0,1);
kni_filestate2_set(thread_seq,FS_PKT_GET_LQ_ERR,0,1);
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,(char*)"kni_process_writedata","MESA_lqueue_try_get_tail() error!ret:%d,datalen:%d\n",ret,datainfo_len);
return -1;
}
@@ -886,7 +888,7 @@ int kni_process_writedata(int thread_seq)
FS_operate(g_kni_fs2_info.handler, g_kni_fs2_info.metric_qout_pkt,0,FS_OP_SET, elapse);
kni_filestate2_set(thread_seq,COLUME_GET_LQUEUE_SUCC,0,1);
kni_filestate2_set(thread_seq,FS_PKT_GET_LQ_SUCC,0,1);
tun_write_data_listq(g_kni_comminfo.fd_tun[thread_seq],datainfo.buf,datainfo.buflen,thread_seq);
@@ -953,21 +955,21 @@ char tun_write_data_listq(int fd,char* send_buf,int send_buflen,int thread_seq)
succ_sendlen = write(fd, send_buf,send_buflen);
if(succ_sendlen<0)
{
kni_filestate2_set(thread_seq,COLUME_WRITE_TUN_ERR,0,1);
kni_filestate2_set(thread_seq,FS_WR_ERR_PKTS,0,1);
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)
{
kni_filestate2_set(thread_seq,COLUME_WRITE_TUN_ERR,0,1);
kni_filestate2_set(thread_seq,FS_WR_ERR_PKTS,0,1);
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_WRITETUN,"succ_sendlen is %d,send_buflen is %d",succ_sendlen,send_buflen);
}
else
{
kni_filestate2_set(thread_seq,COLUME_WRITE_TUN_SUCC,0,1);
kni_filestate2_set(thread_seq,FS_WR_PKTS,0,1);
kni_filestate2_set(thread_seq,FS_WR_BYTES,0,send_buflen);
}
kni_filestate2_set(thread_seq,COLUME_TUN_WRITE,0,1);
clock_gettime(CLOCK_MONOTONIC, &end);
@@ -995,7 +997,7 @@ char tun_write_data(int fd, const char* send_buf, size_t send_buflen,struct stre
{
kni_htable_del(pstream,(const void*)send_buf);
kni_filestate2_set(thread_seq,COLUME_WRITE_TUN_ERR,0,1);
kni_filestate2_set(thread_seq,FS_WR_ERR_PKTS,0,1);
// MESA_kill_tcp(pstream,(const void*)send_buf);
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;
@@ -1004,11 +1006,16 @@ char tun_write_data(int fd, const char* send_buf, size_t send_buflen,struct stre
{
kni_htable_del(pstream,(const void*)send_buf);
kni_filestate2_set(thread_seq,COLUME_WRITE_TUN_ERR,0,1);
kni_filestate2_set(thread_seq,FS_WR_ERR_PKTS,0,1);
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,KNI_MODULE_WRITETUN,"succ_sendlen is %d,send_buflen is %d",succ_sendlen,send_buflen);
}
else
{
kni_filestate2_set(thread_seq,FS_WR_PKTS,0,1);
kni_filestate2_set(thread_seq,FS_WR_BYTES,0,send_buflen);
}
kni_filestate2_set(thread_seq,COLUME_TUN_WRITE,0,1);
clock_gettime(CLOCK_MONOTONIC, &end);
@@ -1092,7 +1099,8 @@ void* pthread_process_tun(void* arg)
elapse=(end.tv_sec-start.tv_sec)*1000000+(end.tv_nsec-start.tv_nsec)/1000;
FS_operate(g_kni_fs2_info.handler, g_kni_fs2_info.metric_tun_read, 0, FS_OP_SET, elapse);
start=end;
kni_filestate2_set(thread_seq,COLUME_TUN_READ,0,1);
kni_filestate2_set(thread_seq,FS_RD_PKTS,0,1);
kni_filestate2_set(thread_seq,FS_RD_BYTES,0,recv_len);
kni_process_readdata(thread_seq,sendpkt_threadid,recv_len,recv_buf);
clock_gettime(CLOCK_MONOTONIC, &end);
elapse=(end.tv_sec-start.tv_sec)*1000000+(end.tv_nsec-start.tv_nsec)/1000;
@@ -1384,7 +1392,7 @@ int tcprepair_set_state(int sk,struct kni_tcp_state* tcp,struct sockaddr* client
int tcp_repair_process(const struct streaminfo* pstream,const void* a_packet,struct kni_pme_info* pmeinfo,int protocol)
{
kni_filestate2_set(pstream->threadnum,COLUME_TCPREPAIR_TOTAL,0,2);
kni_filestate2_set(pstream->threadnum,FS_REPAIR_TOTAL,0,2);
int ret=0;
struct kni_repaired_fds repaired_fds;
@@ -1416,7 +1424,7 @@ int tcp_repair_process(const struct streaminfo* pstream,const void* a_packet,str
}
if ((fd_client < 0)||(fd_server<0))
{
kni_filestate2_set(pstream->threadnum,COLUME_TCPREPAIR_SOCKET_ERR,0,2);
kni_filestate2_set(pstream->threadnum,FS_REPAIR_SOCK_ERR,0,2);
MESA_handle_runtime_log(g_kni_comminfo.logger, RLOG_LV_FATAL,"tcprepair_set_state","socket() error");
return -1;
}
@@ -1429,7 +1437,7 @@ int tcp_repair_process(const struct streaminfo* pstream,const void* a_packet,str
ret=tcprepair_set_state(fd_client,&fake_server,server_addr,client_addr,pstream->addr.addrtype);
if(ret<0)
{
kni_filestate2_set(pstream->threadnum,COLUME_TCPREPAIR_ERROR,0,2);
kni_filestate2_set(pstream->threadnum,FS_REPAIR_SET_ERR,0,2);
close(fd_client);
close(fd_server);
@@ -1442,7 +1450,7 @@ int tcp_repair_process(const struct streaminfo* pstream,const void* a_packet,str
ret=tcprepair_set_state(fd_server,&fake_client,client_addr,server_addr,pstream->addr.addrtype);
if(ret<0)
{
kni_filestate2_set(pstream->threadnum,COLUME_TCPREPAIR_ERROR,0,2);
kni_filestate2_set(pstream->threadnum,FS_REPAIR_SET_ERR,0,2);
close(fd_client);
close(fd_server);
@@ -1464,7 +1472,7 @@ int tcp_repair_process(const struct streaminfo* pstream,const void* a_packet,str
ret=MESA_lqueue_join_tail(g_kni_structinfo.lqueue_send_fds,(void*)&repaired_fds,sizeof(repaired_fds));
if(ret <0)
{
kni_filestate2_set(pstream->threadnum,COLUME_TCPREPAIR_JOINLQ_ERR,0,2);
kni_filestate2_set(pstream->threadnum,FS_REPAIR_JOINLQ_ERR,0,2);
close(fd_client);
close(fd_server);
@@ -1479,12 +1487,12 @@ int tcp_repair_process(const struct streaminfo* pstream,const void* a_packet,str
ret=kni_send_fds(g_kni_comminfo.fd_domain,repaired_fds);
if(ret<0)
{
kni_filestate2_set(0,COLUME_TCPREPAIR_SEND_ERR,0,2);
kni_filestate2_set(0,FS_REPAIR_SEND_ERR,0,2);
g_kni_comminfo.kni_mode_cur=KNI_MODE_BYPASS;
}
else
{
kni_filestate2_set(0,COLUME_TCPREPAIR_SEND_SUCC,0,2);
kni_filestate2_set(0,FS_REPAIR_SEND_SUCC,0,2);
}
close(fd_client);

View File

@@ -87,7 +87,7 @@ char kni_process_ratelimit(int thread_seq,const void* a_packet,struct kni_pme_in
return APP_STATE_DROPME;
}
kni_filestate2_set(thread_seq,COLUME_RATELIMIT,0,1);
// kni_filestate2_set(thread_seq,FS_RATELIMIT,0,1);
char ret = APP_STATE_GIVEME;
struct kni_ratelimit_info* ratelimit_info = &(pmeinfo->ratelimit_info);

View File

@@ -137,7 +137,7 @@ char kni_process_replace(unsigned char dir,int thread_seq,const void* a_packet,s
}
kni_filestate2_set(thread_seq,COLUME_REPLACE,0,1);
// kni_filestate2_set(thread_seq,FS_REPLACE,0,1);
// char ret = APP_STATE_DROPPKT | APP_STATE_DROPME;
char ret = APP_STATE_DROPPKT | APP_STATE_GIVEME;