* fs2统计增加每个线程hash表等统计
* 错误日志加上四元组信息 * dablooms删除一些打印信息
This commit is contained in:
@@ -85,6 +85,7 @@ struct dup_traffic_dabloom_key{
|
||||
|
||||
struct pme_info{
|
||||
addr_type_t addr_type;
|
||||
char stream_addr[KNI_ADDR_MAX];
|
||||
int protocol;
|
||||
int do_log;
|
||||
int policy_id;
|
||||
@@ -250,7 +251,6 @@ static int dup_traffic_dabloom_key_get(struct pkt_info *pktinfo, struct dup_traf
|
||||
key->seq = tcphdr->seq;
|
||||
key->ack_seq = tcphdr->ack_seq;
|
||||
struct kni_tcpopt_info tcpopt;
|
||||
memset(&tcpopt, 0, sizeof(tcpopt));
|
||||
kni_get_tcpopt(&tcpopt, tcphdr, pktinfo->tcphdr_len);
|
||||
key->timestamp = tcpopt.ts_value;
|
||||
if(pktinfo->addr_type == ADDR_TYPE_IPV6){
|
||||
@@ -288,7 +288,7 @@ static void pme_info_destroy(void *data){
|
||||
|
||||
FREE(&pmeinfo);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_FREE], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_CUR], 0, FS_OP_ADD, -1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_CNT], 0, FS_OP_ADD, -1);
|
||||
}
|
||||
else{
|
||||
KNI_LOG_ERROR(logger, "Failed at pme_info_destroy, pmeinfo = null");
|
||||
@@ -306,20 +306,19 @@ static int pme_info_init(struct pme_info *pmeinfo, const struct streaminfo *stre
|
||||
snprintf(pmeinfo->stream_traceid, sizeof(pmeinfo->stream_traceid), "%d%lld.%.9ld",
|
||||
thread_seq, (long long)pmeinfo->start_time.tv_sec, pmeinfo->start_time.tv_nsec);
|
||||
pmeinfo->addr = layer_addr_dup(&(stream->addr));
|
||||
char stream_addr[KNI_ADDR_MAX] = "";
|
||||
//init pme_lock
|
||||
int ret = pthread_mutex_init(&(pmeinfo->lock), NULL);
|
||||
if(ret < 0){
|
||||
KNI_LOG_ERROR(logger, "Failed at init pthread mutex, stream_traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_ERROR(logger, "Failed at init pthread mutex, stream traceid = %s, stream addr = %s", pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
goto error_out;
|
||||
}
|
||||
if(pmeinfo->addr_type == ADDR_TYPE_IPV6){
|
||||
kni_addr_trans_v6(stream->addr.tuple4_v6, stream_addr, sizeof(stream_addr));
|
||||
kni_addr_trans_v6(stream->addr.tuple4_v6, pmeinfo->stream_addr, sizeof(pmeinfo->stream_addr));
|
||||
}
|
||||
else{
|
||||
kni_addr_trans_v4(stream->addr.tuple4_v4, stream_addr, sizeof(stream_addr));
|
||||
kni_addr_trans_v4(stream->addr.tuple4_v4, pmeinfo->stream_addr, sizeof(pmeinfo->stream_addr));
|
||||
}
|
||||
KNI_LOG_INFO(logger, "stream addr = %s, stream traceid = %s", stream_addr, pmeinfo->stream_traceid);
|
||||
//KNI_LOG_INFO(logger, "stream addr = %s, stream traceid = %s", pmeinfo->stream_addr, pmeinfo->stream_traceid);
|
||||
return 0;
|
||||
|
||||
error_out:
|
||||
@@ -470,10 +469,10 @@ static void stream_destroy(struct pme_info *pmeinfo, int do_log){
|
||||
if(do_log == 1){
|
||||
ret = log_generate(pmeinfo, logger);
|
||||
if(ret < 0){
|
||||
KNI_LOG_ERROR(logger, "Failed at log_generate, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_ERROR(logger, "Failed at log_generate, stream traceid = %s, stream addr = %s", pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
}
|
||||
else{
|
||||
KNI_LOG_DEBUG(logger, "Succeed at log_generate, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Succeed at log_generate, stream traceid = %s, stream addr = %s", pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
}
|
||||
}
|
||||
//free pme
|
||||
@@ -534,12 +533,11 @@ static int protocol_identify(const struct streaminfo* stream, char *buf, int len
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int wrapped_kni_cmsg_set(struct kni_cmsg *cmsg, uint16_t type, const unsigned char *value,
|
||||
uint16_t size, char *stream_traceid){
|
||||
static int wrapped_kni_cmsg_set(struct kni_cmsg *cmsg, uint16_t type, const unsigned char *value, uint16_t size, struct pme_info *pmeinfo){
|
||||
void *logger = g_kni_handle->local_logger;
|
||||
int ret = kni_cmsg_set(cmsg, type, value, size);
|
||||
if(ret < 0){
|
||||
KNI_LOG_ERROR(logger, "Failed set cmsg, type = %d, stream traceid = %s", type, stream_traceid);
|
||||
KNI_LOG_ERROR(logger, "Failed set cmsg, type = %d, stream traceid = %s, stream addr = %s", type, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -559,55 +557,55 @@ static unsigned char* kni_cmsg_serialize_header_new(struct pme_info *pmeinfo, st
|
||||
uint16_t client_window = htons(pmeinfo->client_window);
|
||||
uint16_t server_window = htons(pmeinfo->server_window);
|
||||
//seq
|
||||
int ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_SEQ, (const unsigned char*)&seq, 4, pmeinfo->stream_traceid);
|
||||
int ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_SEQ, (const unsigned char*)&seq, 4, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//ack
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_ACK, (const unsigned char*)&ack, 4, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_ACK, (const unsigned char*)&ack, 4, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//client mss
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_MSS_CLIENT, (const unsigned char*)&client_mss, 2, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_MSS_CLIENT, (const unsigned char*)&client_mss, 2, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//server mss
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_MSS_SERVER, (const unsigned char*)&server_mss, 2, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_MSS_SERVER, (const unsigned char*)&server_mss, 2, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//both = 1, send to tfe
|
||||
if(pmeinfo->client_tcpopt.wscale_set && pmeinfo->server_tcpopt.wscale_set){
|
||||
//client wscale
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_WSACLE_CLIENT, (const unsigned char*)&(pmeinfo->client_tcpopt.wscale), 1, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_WSACLE_CLIENT, (const unsigned char*)&(pmeinfo->client_tcpopt.wscale), 1, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//server wscale
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_WSACLE_SERVER, (const unsigned char*)&(pmeinfo->server_tcpopt.wscale), 1, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_WSACLE_SERVER, (const unsigned char*)&(pmeinfo->server_tcpopt.wscale), 1, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
}
|
||||
//client sack
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_SACK_CLIENT, (const unsigned char*)&(pmeinfo->client_tcpopt.sack), 1, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_SACK_CLIENT, (const unsigned char*)&(pmeinfo->client_tcpopt.sack), 1, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//server sack
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_SACK_SERVER, (const unsigned char*)&(pmeinfo->server_tcpopt.sack), 1, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_SACK_SERVER, (const unsigned char*)&(pmeinfo->server_tcpopt.sack), 1, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//client timestamp
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_TS_CLIENT, (const unsigned char*)&(pmeinfo->client_tcpopt.ts_set), 1, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_TS_CLIENT, (const unsigned char*)&(pmeinfo->client_tcpopt.ts_set), 1, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//server timestamp
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_TS_SERVER, (const unsigned char*)&(pmeinfo->server_tcpopt.ts_set), 1, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_TS_SERVER, (const unsigned char*)&(pmeinfo->server_tcpopt.ts_set), 1, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//protocol
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_PROTOCOL, (const unsigned char*)&protocol_type, 1, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_PROTOCOL, (const unsigned char*)&protocol_type, 1, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//client window
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_WINDOW_CLIENT, (const unsigned char*)&client_window, 2, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_WINDOW_CLIENT, (const unsigned char*)&client_window, 2, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//server window
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_WINDOW_SERVER, (const unsigned char*)&server_window, 2, pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_TCP_RESTORE_WINDOW_SERVER, (const unsigned char*)&server_window, 2, pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//maat policy id
|
||||
policy_id = pmeinfo->policy_id;
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_POLICY_ID, (const unsigned char*)&policy_id, sizeof(policy_id), pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_POLICY_ID, (const unsigned char*)&policy_id, sizeof(policy_id), pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//stream trace id
|
||||
trace_id = pmeinfo->stream_traceid;
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_STREAM_TRACE_ID, (const unsigned char*)trace_id,
|
||||
strnlen(pmeinfo->stream_traceid, sizeof(pmeinfo->stream_traceid)), pmeinfo->stream_traceid);
|
||||
strnlen(pmeinfo->stream_traceid, sizeof(pmeinfo->stream_traceid)), pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//src mac
|
||||
char src_mac[6];
|
||||
@@ -618,7 +616,7 @@ static unsigned char* kni_cmsg_serialize_header_new(struct pme_info *pmeinfo, st
|
||||
}
|
||||
KNI_LOG_DEBUG(logger, "Succeed at get src mac from rawpkt, addr = %02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
|
||||
src_mac[0], src_mac[1], src_mac[2], src_mac[3], src_mac[4], src_mac[5]);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_SRC_MAC, (const unsigned char*)src_mac, sizeof(src_mac), pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_SRC_MAC, (const unsigned char*)src_mac, sizeof(src_mac), pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
//dst mac
|
||||
char dst_mac[6];
|
||||
@@ -629,7 +627,7 @@ static unsigned char* kni_cmsg_serialize_header_new(struct pme_info *pmeinfo, st
|
||||
}
|
||||
KNI_LOG_DEBUG(logger, "Succeed at get dst mac from rawpkt, addr = %02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
|
||||
dst_mac[0], dst_mac[1], dst_mac[2], dst_mac[3], dst_mac[4], dst_mac[5]);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_DST_MAC, (const unsigned char*)dst_mac, sizeof(dst_mac), pmeinfo->stream_traceid);
|
||||
ret = wrapped_kni_cmsg_set(cmsg, TFE_CMSG_DST_MAC, (const unsigned char*)dst_mac, sizeof(dst_mac), pmeinfo);
|
||||
if(ret < 0) goto error_out;
|
||||
|
||||
bufflen = kni_cmsg_serialize_size_get(cmsg);
|
||||
@@ -637,8 +635,8 @@ static unsigned char* kni_cmsg_serialize_header_new(struct pme_info *pmeinfo, st
|
||||
serialize_len = 0;
|
||||
ret = kni_cmsg_serialize(cmsg, buff, bufflen, &serialize_len);
|
||||
if(ret < 0){
|
||||
KNI_LOG_ERROR(logger, "Failed at serialize cmsg, ret = %d, stream traceid = %s",
|
||||
ret, pmeinfo->stream_traceid);
|
||||
KNI_LOG_ERROR(logger, "Failed at serialize cmsg, ret = %d, stream traceid = %s, stream addr = %s",
|
||||
ret, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
goto error_out;
|
||||
}
|
||||
*len = serialize_len;
|
||||
@@ -891,8 +889,9 @@ static int tuple2stream_htable_key_get_v6_by_stream(const struct streaminfo *str
|
||||
}
|
||||
|
||||
|
||||
static int tuple2stream_htable_add(MESA_htable_handle tuple2stream_htable, addr_type_t addr_type, struct pkt_info *pktinfo,
|
||||
struct streaminfo *stream, struct pme_info *pmeinfo){
|
||||
static int tuple2stream_htable_add(addr_type_t addr_type, struct pkt_info *pktinfo,
|
||||
struct streaminfo *stream, struct pme_info *pmeinfo, int thread_seq){
|
||||
MESA_htable_handle tuple2stream_htable = g_kni_handle->threads_handle[thread_seq].tuple2stream_htable;
|
||||
void *logger = g_kni_handle->local_logger;
|
||||
int ret;
|
||||
struct tuple2stream_htable_value *value = ALLOC(struct tuple2stream_htable_value, 1);
|
||||
@@ -913,7 +912,8 @@ static int tuple2stream_htable_add(MESA_htable_handle tuple2stream_htable, addr_
|
||||
}
|
||||
else{
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_SUCC], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, 1);
|
||||
}
|
||||
}
|
||||
//ipv4
|
||||
@@ -930,9 +930,10 @@ static int tuple2stream_htable_add(MESA_htable_handle tuple2stream_htable, addr_
|
||||
}
|
||||
else{
|
||||
//KNI_LOG_DEBUG(logger, "MESA_htable: Succeed at add, table = tuple2stream_htable, key = %s, key_size = %d, value = %p, ret = %d",
|
||||
key_str, sizeof(key), value, ret);
|
||||
// key_str, sizeof(key), value, ret);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_SUCC], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, 1);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@@ -950,7 +951,8 @@ static char pending_opstate(struct streaminfo *stream, struct pme_info *pmeinfo,
|
||||
}
|
||||
if(!pktinfo.tcphdr->syn){
|
||||
//pending_opstate not syn, bypass and dropme
|
||||
KNI_LOG_DEBUG(logger, "Stream error: pending opstate, not syn, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: pending opstate, not syn, stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_NO_SYN], 0, FS_OP_ADD, 1);
|
||||
pmeinfo->error = STREAM_ERROR_NO_SYN;
|
||||
return APP_STATE_FAWPKT | APP_STATE_DROPME;
|
||||
@@ -992,12 +994,13 @@ static int traceid2pme_htable_add(struct pme_info *pmeinfo){
|
||||
}
|
||||
else{
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_ADD_SUCC], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_CUR], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_CNT], 0, FS_OP_ADD, 1);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int tuple2stream_htable_del(MESA_htable_handle handle, const struct streaminfo *stream){
|
||||
int tuple2stream_htable_del(const struct streaminfo *stream, int thread_seq){
|
||||
MESA_htable_handle handle = g_kni_handle->threads_handle[thread_seq].tuple2stream_htable;
|
||||
void *logger = g_kni_handle->local_logger;
|
||||
int reversed = 0, ret;
|
||||
//ipv6
|
||||
@@ -1015,7 +1018,8 @@ int tuple2stream_htable_del(MESA_htable_handle handle, const struct streaminfo *
|
||||
}
|
||||
else{
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_SUCC], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR], 0, FS_OP_ADD, -1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, -1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, -1);
|
||||
}
|
||||
}
|
||||
//ipv4
|
||||
@@ -1032,9 +1036,10 @@ int tuple2stream_htable_del(MESA_htable_handle handle, const struct streaminfo *
|
||||
}
|
||||
else{
|
||||
//KNI_LOG_DEBUG(logger, "MESA_htable: Succeed at del, table = %s, key = %s, key_size = %d, ret = %d",
|
||||
"tuple2stream_htable", key_str, sizeof(key), ret);
|
||||
// "tuple2stream_htable", key_str, sizeof(key), ret);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_SUCC], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR], 0, FS_OP_ADD, -1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, -1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, -1);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@@ -1057,7 +1062,7 @@ static void traceid2pme_htable_del(struct pme_info *pmeinfo){
|
||||
//KNI_LOG_DEBUG(logger, "MESA_htable: Succeed at del, table = %s, key = %s, key_size = %d",
|
||||
// "traceid2pme_htable", pmeinfo->stream_traceid, key_size);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_DEL_SUCC], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_CUR], 0, FS_OP_ADD, -1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_CNT], 0, FS_OP_ADD, -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1071,7 +1076,8 @@ static int first_data_intercept(struct streaminfo *stream, struct pme_info *pmei
|
||||
}
|
||||
if(pmeinfo->has_dup_traffic == 1){
|
||||
if(g_kni_handle->dup_traffic_action == KNI_ACTION_BYPASS){
|
||||
KNI_LOG_DEBUG(g_kni_handle->local_logger, "Stream error: stream has dup traffic, dup_traffic_action = bypass, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(g_kni_handle->local_logger, "Stream error: stream has dup traffic, dup_traffic_action = bypass, "
|
||||
"stream traceid = %s, stream addr = %s", pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_DUP_TRAFFIC], 0, FS_OP_ADD, 1);
|
||||
pmeinfo->intercept_state=0;
|
||||
pmeinfo->error = STREAM_ERROR_DUP_TRAFFIC;
|
||||
@@ -1082,10 +1088,11 @@ static int first_data_intercept(struct streaminfo *stream, struct pme_info *pmei
|
||||
void *logger = g_kni_handle->local_logger;
|
||||
int ret;
|
||||
//only intercept: add to tuple2stream_htable
|
||||
ret = tuple2stream_htable_add(g_kni_handle->threads_handle[thread_seq].tuple2stream_htable, pmeinfo->addr_type, pktinfo, stream, pmeinfo);
|
||||
ret = tuple2stream_htable_add(pmeinfo->addr_type, pktinfo, stream, pmeinfo, thread_seq);
|
||||
if(ret < 0){
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_TUPLE2STM_ADD_FAIL], 0, FS_OP_ADD, 1);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: tuple2stm add fail, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: tuple2stm add fail, stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
pmeinfo->intercept_state=0;
|
||||
pmeinfo->error = STREAM_ERROR_TUPLE2STM_ADD_FAIL;
|
||||
return APP_STATE_FAWPKT | APP_STATE_DROPME;
|
||||
@@ -1098,7 +1105,8 @@ static int first_data_intercept(struct streaminfo *stream, struct pme_info *pmei
|
||||
//add cmsg
|
||||
char *buff = add_cmsg_to_packet(pmeinfo, stream, pktinfo, &len);
|
||||
if(buff == NULL){
|
||||
KNI_LOG_DEBUG(logger, "Stream error: failed at add cmsg to packet, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: failed at add cmsg to packet, stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
pmeinfo->error = STREAM_ERROR_CMSG_ADD_FAIL;
|
||||
pmeinfo->intercept_state=0;
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_CMSG_ADD_FAIL], 0, FS_OP_ADD, 1);
|
||||
@@ -1108,17 +1116,19 @@ static int first_data_intercept(struct streaminfo *stream, struct pme_info *pmei
|
||||
//send to tfe
|
||||
ret = send_to_tfe(buff, len, thread_seq, pmeinfo->tfe_id, pmeinfo->addr_type);
|
||||
if(ret < 0){
|
||||
KNI_LOG_DEBUG(logger, "Stream error: failed at send first packet to tfe%d, stream traceid = %s", pmeinfo->tfe_id, pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: failed at send first packet to tfe%d, stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->tfe_id, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_SENDTO_TFE_FAIL], 0, FS_OP_ADD, 1);
|
||||
pmeinfo->intercept_state=0;
|
||||
pmeinfo->error = STREAM_ERROR_SENDTO_TFE_FAIL;
|
||||
FREE(&buff);
|
||||
tuple2stream_htable_del(g_kni_handle->threads_handle[thread_seq].tuple2stream_htable, stream);
|
||||
tuple2stream_htable_del(stream, thread_seq);
|
||||
traceid2pme_htable_del(pmeinfo);
|
||||
return APP_STATE_FAWPKT | APP_STATE_DROPME;
|
||||
}
|
||||
else{
|
||||
KNI_LOG_DEBUG(logger, "Succeed at send first packet to tfe%d, stream traceid = %s", pmeinfo->tfe_id, pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Succeed at send first packet to tfe%d, stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->tfe_id, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
}
|
||||
FREE(&buff);
|
||||
//fs stat
|
||||
@@ -1250,7 +1260,8 @@ static char data_opstate(struct streaminfo *stream, struct pme_info *pmeinfo, co
|
||||
}
|
||||
ret = send_to_tfe((char*)a_packet, len, thread_seq, pmeinfo->tfe_id, pmeinfo->addr_type);
|
||||
if(ret < 0){
|
||||
KNI_LOG_ERROR(logger, "Failed at send continue packet to tfe%d, stream traceid = %s", pmeinfo->tfe_id, pmeinfo->stream_traceid);
|
||||
KNI_LOG_ERROR(logger, "Failed at send continue packet to tfe%d, stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->tfe_id, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_SENDTO_TFE_FAIL], 0, FS_OP_ADD, 1);
|
||||
}
|
||||
else{
|
||||
@@ -1266,7 +1277,8 @@ static char data_opstate(struct streaminfo *stream, struct pme_info *pmeinfo, co
|
||||
//first data > 1500, bypass and dropme
|
||||
if(pktinfo.ip_totlen > KNI_DEFAULT_MTU){
|
||||
pmeinfo->error = STREAM_ERROR_EXCEED_MTU;
|
||||
KNI_LOG_DEBUG(logger, "Stream error: first data packet exceed MTU(1500), stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: first data packet exceed MTU(1500), stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_EXCEED_MTU], 0, FS_OP_ADD, 1);
|
||||
return APP_STATE_FAWPKT | APP_STATE_DROPME;
|
||||
}
|
||||
@@ -1300,7 +1312,7 @@ static char data_opstate(struct streaminfo *stream, struct pme_info *pmeinfo, co
|
||||
}
|
||||
//not double dir, bypass and dropme
|
||||
if(stream->dir != DIR_DOUBLE){
|
||||
KNI_LOG_DEBUG(logger, "Stream error: asym routing, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: asym routing, stream traceid = %s, stream addr = %s", pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_ASYM_ROUTING], 0, FS_OP_ADD, 1);
|
||||
pmeinfo->error = STREAM_ERROR_ASYM_ROUTING;
|
||||
return APP_STATE_FAWPKT | APP_STATE_DROPME;
|
||||
@@ -1312,7 +1324,8 @@ static char data_opstate(struct streaminfo *stream, struct pme_info *pmeinfo, co
|
||||
switch(pmeinfo->protocol){
|
||||
//can not identify protocol from first data packet, bypass and dropme
|
||||
case KNI_PROTOCOL_UNKNOWN:
|
||||
KNI_LOG_DEBUG(logger, "Stream error: failed at protocol_identify, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: failed at protocol_identify, stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_UNSUPPORTED_PROTOCOL], 0, FS_OP_ADD, 1);
|
||||
pmeinfo->error = STREAM_ERROR_UNSUPPORTED_PROTOCOL;
|
||||
return APP_STATE_FAWPKT | APP_STATE_DROPME;
|
||||
@@ -1327,8 +1340,8 @@ static char data_opstate(struct streaminfo *stream, struct pme_info *pmeinfo, co
|
||||
}
|
||||
//receive client hello, but no syn/ack, bypass and dropme
|
||||
if(pmeinfo->has_syn == 0 || pmeinfo->has_syn_ack == 0){
|
||||
KNI_LOG_DEBUG(logger, "Stream error: %s, %s, stream traceid = %s", pmeinfo->has_syn == 0 ? "no syn" : "have syn",
|
||||
pmeinfo->has_syn_ack == 0 ? "no syn/ack" : "have syn/ack", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: %s, %s, stream traceid = %s, stream addr = %s", pmeinfo->has_syn == 0 ? "no syn" : "have syn",
|
||||
pmeinfo->has_syn_ack == 0 ? "no syn/ack" : "have syn/ack", pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_NO_SYN_ACK], 0, FS_OP_ADD, 1);
|
||||
pmeinfo->error = STREAM_ERROR_NO_SYN_ACK;
|
||||
return APP_STATE_FAWPKT | APP_STATE_DROPME;
|
||||
@@ -1338,8 +1351,8 @@ static char data_opstate(struct streaminfo *stream, struct pme_info *pmeinfo, co
|
||||
thread_seq, &(pmeinfo->policy_id), &(pmeinfo->do_log), &(pmeinfo->maat_hit));
|
||||
//policy scan log
|
||||
char *action_str = kni_maat_action_trans(pmeinfo->action);
|
||||
KNI_LOG_INFO(logger, "intercept_policy_scan: %s, %s, policy_id = %d, action = %d(%s), maat_hit = %d, stream traceid = %s",
|
||||
stream_addr, protocol_identify_res.domain, pmeinfo->policy_id, pmeinfo->action, action_str, pmeinfo->maat_hit, pmeinfo->stream_traceid);
|
||||
KNI_LOG_INFO(logger, "intercept_policy_scan: %s, %s, policy_id = %d, action = %d(%s), maat_hit = %d, stream traceid = %s, stream addr = %s",
|
||||
stream_addr, protocol_identify_res.domain, pmeinfo->policy_id, pmeinfo->action, action_str, pmeinfo->maat_hit, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_INTCP_READY_STM], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_INTCP_READY_BYTE], 0, FS_OP_ADD, pktinfo.ip_totlen);
|
||||
switch(pmeinfo->action){
|
||||
@@ -1353,8 +1366,8 @@ static char data_opstate(struct streaminfo *stream, struct pme_info *pmeinfo, co
|
||||
return first_data_intercept(stream, pmeinfo, &pktinfo, stream_addr, thread_seq);
|
||||
default:
|
||||
//action != intercept && action != bypass,bypass and dropme
|
||||
KNI_LOG_DEBUG(logger, "Stream error: action %d(%s) = invalid: policy_id = %d, stream traceid = %s, domain = ",
|
||||
pmeinfo->action, action_str, pmeinfo->policy_id, pmeinfo->stream_traceid, protocol_identify_res.domain);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: action %d(%s) = invalid: policy_id = %d, domain = %s, stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->action, action_str, pmeinfo->policy_id, protocol_identify_res.domain, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_INVALID_ACTION], 0, FS_OP_ADD, 1);
|
||||
pmeinfo->error = STREAM_ERROR_INVALID_ACTION;
|
||||
return APP_STATE_FAWPKT | APP_STATE_DROPME;
|
||||
@@ -1376,7 +1389,7 @@ static char close_opstate(const struct streaminfo *stream, struct pme_info *pmei
|
||||
//reset clock: when sapp end, start clock
|
||||
MESA_htable_search(g_kni_handle->traceid2pme_htable, (const unsigned char*)pmeinfo->stream_traceid,
|
||||
strnlen(pmeinfo->stream_traceid, sizeof(pmeinfo->stream_traceid)));
|
||||
tuple2stream_htable_del(g_kni_handle->threads_handle[thread_seq].tuple2stream_htable, stream);
|
||||
tuple2stream_htable_del(stream, thread_seq);
|
||||
return APP_STATE_DROPPKT | APP_STATE_DROPME;
|
||||
case KNI_ACTION_BYPASS:
|
||||
//KNI_LOG_DEBUG(logger, "action = bypass, set tfe_release = 1, stream_trace_id = %s", pmeinfo->stream_traceid);
|
||||
@@ -1387,8 +1400,8 @@ static char close_opstate(const struct streaminfo *stream, struct pme_info *pmei
|
||||
char *action_str = kni_maat_action_trans(pmeinfo->action);
|
||||
pmeinfo->error = STREAM_ERROR_NO_DATA;
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_NO_DATA], 0, FS_OP_ADD, 1);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: close_opstate, action %d(%s) = abnormal, stream_traceid = %s",
|
||||
pmeinfo->action, action_str, pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: close_opstate, action %d(%s) = abnormal, stream traceid = %s, stream addr = %s",
|
||||
pmeinfo->action, action_str, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
return APP_STATE_FAWPKT | APP_STATE_DROPME;
|
||||
}
|
||||
}
|
||||
@@ -1413,12 +1426,12 @@ extern "C" char kni_tcpall_entry(struct streaminfo *stream, void** pme, int thre
|
||||
//FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STATE_PENDING], 0, FS_OP_ADD, 1);
|
||||
pmeinfo = ALLOC(struct pme_info, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_NEW_SUCC], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_CUR], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_PME_CNT], 0, FS_OP_ADD, 1);
|
||||
*pme = pmeinfo;
|
||||
//stream error: pme init fail
|
||||
ret = pme_info_init(pmeinfo, stream, thread_seq);
|
||||
if(ret < 0){
|
||||
KNI_LOG_DEBUG(logger, "Stream error: fail at pme_info_init, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: fail at pme_info_init, stream traceid = %s, stream addr = %s", pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
pmeinfo->error = STREAM_ERROR_PME_INIT_FAIL;
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_PME_INIT_FAIL], 0, FS_OP_ADD, 1);
|
||||
goto error_out;
|
||||
@@ -1426,7 +1439,7 @@ extern "C" char kni_tcpall_entry(struct streaminfo *stream, void** pme, int thre
|
||||
//stream error: no tfe
|
||||
pmeinfo->tfe_id = tfe_mgr_alive_node_get(g_kni_handle->_tfe_mgr, thread_seq);
|
||||
if(pmeinfo->tfe_id < 0){
|
||||
KNI_LOG_DEBUG(logger, "Stream error: no available tfe, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "Stream error: no available tfe, stream traceid = %s, stream addr = %s", pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
pmeinfo->error = STREAM_ERROR_NO_TFE;
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STMERR_NO_TFE], 0, FS_OP_ADD, 1);
|
||||
goto error_out;
|
||||
@@ -1454,7 +1467,8 @@ extern "C" char kni_tcpall_entry(struct streaminfo *stream, void** pme, int thre
|
||||
default:
|
||||
ret = APP_STATE_FAWPKT | APP_STATE_GIVEME;
|
||||
//FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_STATE_UNKNOWN], 0, FS_OP_ADD, 1);
|
||||
KNI_LOG_ERROR(logger, "Unknown stream opstate %d, stream traceid = %s", stream->pktstate, pmeinfo->stream_traceid);
|
||||
KNI_LOG_ERROR(logger, "Unknown stream opstate %d, stream traceid = %s, stream addr = %s",
|
||||
stream->pktstate, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
break;
|
||||
}
|
||||
//sapp release: bypass or intercept
|
||||
@@ -1571,10 +1585,11 @@ int tuple2stream_htable_search(MESA_htable_handle handle, struct ethhdr *ether_h
|
||||
value = (tuple2stream_htable_value*)MESA_htable_search(handle, (const unsigned char*)(&key), key_size);
|
||||
}
|
||||
if(value == NULL){
|
||||
KNI_LOG_ERROR(logger, "MESA_htable: failed at search, table is tuple2stream_htable, key = %s, key_size = %d", key_str, key_size);
|
||||
//FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_SEARCH_FAIL], 0, FS_OP_ADD, 1);
|
||||
KNI_LOG_DEBUG(logger, "MESA_htable: search not hit, table is tuple2stream_htable, key = %s, key_size = %d", key_str, key_size);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_SEARCH_MISS], 0, FS_OP_ADD, 1);
|
||||
return -1;
|
||||
}
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_SEARCH_HIT], 0, FS_OP_ADD, 1);
|
||||
//FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_SEARCH_SUCC], 0, FS_OP_ADD, 1);
|
||||
unsigned char dir = value->route_dir;
|
||||
if(reversed != value->reversed){
|
||||
@@ -1650,14 +1665,14 @@ static int wrapped_kni_cmsg_get(struct pme_info *pmeinfo, struct kni_cmsg *cmsg,
|
||||
int ret = kni_cmsg_get(cmsg, type, &value_size, &value);
|
||||
if(ret < 0){
|
||||
if(ret == KNI_CMSG_INVALID_TYPE){
|
||||
KNI_LOG_ERROR(logger, "Failed at kni_cmsg_get: type = %d, ret = %d, stream traceid = %s",
|
||||
type, ret, pmeinfo->stream_traceid);
|
||||
KNI_LOG_ERROR(logger, "Failed at kni_cmsg_get: type = %d, ret = %d, stream traceid = %s, stream addr = %s",
|
||||
type, ret, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
if(value_size > value_size_max){
|
||||
KNI_LOG_ERROR(logger, "kni_cmsg_get: type = %d, size = %d, which should <= %d, stream traceid = %s",
|
||||
type, value_size, value_size_max, pmeinfo->stream_traceid);
|
||||
KNI_LOG_ERROR(logger, "kni_cmsg_get: type = %d, size = %d, which should <= %d, stream traceid = %s, stream addr = %s",
|
||||
type, value_size, value_size_max, pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
return -1;
|
||||
}
|
||||
switch(type)
|
||||
@@ -1708,7 +1723,7 @@ static long traceid2pme_htable_search_cb(void *data, const uchar *key, uint size
|
||||
wrapped_kni_cmsg_get(pmeinfo, cmsg, TFE_CMSG_SSL_CERT_VERIFY, sizeof(pmeinfo->ssl_cert_verify), logger);
|
||||
wrapped_kni_cmsg_get(pmeinfo, cmsg, TFE_CMSG_SSL_ERROR, sizeof(pmeinfo->ssl_error), logger);
|
||||
clock_gettime(CLOCK_REALTIME, &(pmeinfo->end_time));
|
||||
KNI_LOG_DEBUG(logger, "recv cmsg from tfe, stream traceid = %s", pmeinfo->stream_traceid);
|
||||
KNI_LOG_DEBUG(logger, "recv cmsg from tfe, stream traceid = %s, stream addr = %s", pmeinfo->stream_traceid, pmeinfo->stream_addr);
|
||||
can_destroy = judge_stream_can_destroy(pmeinfo, CALLER_TFE);
|
||||
if(can_destroy == 1){
|
||||
traceid2pme_htable_del(pmeinfo);
|
||||
@@ -1977,7 +1992,7 @@ static struct kni_field_stat_handle * fs_init(const char *profile){
|
||||
//pme
|
||||
fs_handle->fields[KNI_FIELD_PME_NEW_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "pme_new");
|
||||
fs_handle->fields[KNI_FIELD_PME_FREE] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "pme_free");
|
||||
fs_handle->fields[KNI_FIELD_PME_CUR] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "pme_cur");
|
||||
fs_handle->fields[KNI_FIELD_PME_CNT] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "pme_cnt");
|
||||
|
||||
//errors
|
||||
fs_handle->fields[KNI_FIELD_SENDLOG_FAIL] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "e_sendlog");
|
||||
@@ -1992,11 +2007,11 @@ static struct kni_field_stat_handle * fs_init(const char *profile){
|
||||
//htable
|
||||
fs_handle->fields[KNI_FIELD_ID2PME_ADD_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "id2pme_add_S");
|
||||
fs_handle->fields[KNI_FIELD_ID2PME_DEL_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "id2pme_del_S");
|
||||
fs_handle->fields[KNI_FIELD_ID2PME_CUR] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "id2pme_cur");
|
||||
fs_handle->fields[KNI_FIELD_ID2PME_CNT] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "id2pme_cnt");
|
||||
fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "tup2stm_add_S");
|
||||
fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "tup2stm_del_S");
|
||||
fs_handle->fields[KNI_FIELD_TUPLE2STM_CUR] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "tuple2stm_cur");
|
||||
|
||||
fs_handle->fields[KNI_FIELD_TUPLE2STM_SEARCH_HIT] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "tup2stm_hit");
|
||||
fs_handle->fields[KNI_FIELD_TUPLE2STM_SEARCH_MISS] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "tup2stm_miss");
|
||||
//sendlog
|
||||
fs_handle->fields[KNI_FIELD_SENDLOG_SUCC] = FS_register(handle, FS_STYLE_FIELD, FS_CALC_CURRENT, "sendlog_S");
|
||||
|
||||
@@ -2015,14 +2030,18 @@ static struct kni_field_stat_handle * fs_init(const char *profile){
|
||||
}
|
||||
}
|
||||
//table
|
||||
fs_handle->column_cnt = g_kni_handle->thread_count;
|
||||
char buff[KNI_PATH_MAX];
|
||||
for(int i = 0; i < fs_handle->column_cnt; i++){
|
||||
for(int i = 0; i < g_kni_handle->thread_count; i++){
|
||||
snprintf(buff, sizeof(buff), "tid%d", i);
|
||||
fs_handle->column_ids[i] = FS_register(handle, FS_STYLE_COLUMN, FS_CALC_CURRENT, buff);
|
||||
}
|
||||
snprintf(buff, sizeof(buff), "Total");
|
||||
//lines
|
||||
fs_handle->column_ids[g_kni_handle->thread_count] = FS_register(handle, FS_STYLE_COLUMN, FS_CALC_CURRENT, buff);
|
||||
snprintf(buff, sizeof(buff), "bloom_cnt");
|
||||
fs_handle->line_ids[0] = FS_register(handle, FS_STYLE_LINE, FS_CALC_CURRENT, buff);
|
||||
snprintf(buff, sizeof(buff), "tuple2stm_cnt");
|
||||
fs_handle->line_ids[1] = FS_register(handle, FS_STYLE_LINE, FS_CALC_CURRENT, buff);
|
||||
|
||||
fs_handle->handle = handle;
|
||||
FS_start(handle);
|
||||
@@ -2051,7 +2070,7 @@ static int traceid2pme_htable_expire_notify_cb(void *data, int eliminate_type){
|
||||
can_destroy = judge_stream_can_destroy(pmeinfo, CALLER_TFE);
|
||||
if(can_destroy == 1){
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_DEL_SUCC], 0, FS_OP_ADD, 1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_CUR], 0, FS_OP_ADD, -1);
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_ID2PME_CNT], 0, FS_OP_ADD, -1);
|
||||
stream_destroy(pmeinfo, pmeinfo->do_log);
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user