diff --git a/common/include/kni_utils.h b/common/include/kni_utils.h index 3830f7f..cadbdad 100644 --- a/common/include/kni_utils.h +++ b/common/include/kni_utils.h @@ -105,7 +105,7 @@ enum kni_field{ //pme KNI_FIELD_PME_NEW_SUCC, KNI_FIELD_PME_FREE, - KNI_FIELD_PME_CUR, + KNI_FIELD_PME_CNT, //errors KNI_FIELD_SENDLOG_FAIL, KNI_FIELD_ID2PME_ADD_FAIL, @@ -118,10 +118,12 @@ enum kni_field{ //htable KNI_FIELD_ID2PME_ADD_SUCC, KNI_FIELD_ID2PME_DEL_SUCC, - KNI_FIELD_ID2PME_CUR, + KNI_FIELD_ID2PME_CNT, KNI_FIELD_TUPLE2STM_ADD_SUCC, KNI_FIELD_TUPLE2STM_DEL_SUCC, KNI_FIELD_TUPLE2STM_CUR, + KNI_FIELD_TUPLE2STM_SEARCH_HIT, + KNI_FIELD_TUPLE2STM_SEARCH_MISS, //send_log KNI_FIELD_SENDLOG_SUCC, //sapp_inject @@ -138,8 +140,6 @@ struct kni_field_stat_handle{ int fields[KNI_FS_FIELD_MAX]; int column_ids[KNI_FS_COLUMN_MAX]; int line_ids[KNI_FS_LINE_MAX]; - int column_cnt; - int line_cnt; }; struct pkt_info{ diff --git a/common/src/kni_utils.cpp b/common/src/kni_utils.cpp index e330e58..b7ba83e 100644 --- a/common/src/kni_utils.cpp +++ b/common/src/kni_utils.cpp @@ -145,6 +145,7 @@ uint16_t kni_udp_checksum(const void *_buf, size_t len, in_addr_t src_addr, in_a } void kni_get_tcpopt(struct kni_tcpopt_info *tcpopt, struct tcphdr* tcphdr,int tcphdr_len){ + memset(tcpopt, 0, sizeof(*tcpopt)); tcpopt->mss = KNI_DEFAULT_MSS; tcpopt->wscale = KNI_DEFAULT_WINSCLE; diff --git a/docs/fs统计说明.md b/docs/fs统计说明.md index c262cfa..293d2b6 100644 --- a/docs/fs统计说明.md +++ b/docs/fs统计说明.md @@ -53,14 +53,14 @@ * 可拦截字节数 * pme_new / pme_free * 申请/释放了多少个流上下文 -* pme_cur +* pme_cnt * 当前内存中有多少个pme -* id2pme_cur +* id2pme_cnt * traceid2pme_htable中当前有多少个元素 -* tuple2stm_cur - * tuple2stream_htable中当前有多少元素 * bloom_hit * 被识别成重复包的个数 +* 系统总占用内存大小 + * sapp_stm_cnt + pme_cnt + id2pme_cnt + tuple2stm_cnt + bloom_cnt * 各种统计之间关系 ```cpp diff --git a/entry/src/kni_entry.cpp b/entry/src/kni_entry.cpp index ceaf200..496d4c2 100644 --- a/entry/src/kni_entry.cpp +++ b/entry/src/kni_entry.cpp @@ -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; } diff --git a/vendor/CMakeLists.txt b/vendor/CMakeLists.txt index fa03335..589d25c 100644 --- a/vendor/CMakeLists.txt +++ b/vendor/CMakeLists.txt @@ -39,8 +39,8 @@ set_property(TARGET uuid PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/i ### dabloom ExternalProject_Add(dablooms PREFIX dablooms - URL ${CMAKE_CURRENT_SOURCE_DIR}/dablooms-v1.0.0-20190904.tar.gz - URL_MD5 9c49aaf1eefe5e0f836b46fc30287782 + URL ${CMAKE_CURRENT_SOURCE_DIR}/dablooms-v1.0.1-20190922.tar.gz + URL_MD5 11b5ce5edd6777348789647f3e5f22ae CONFIGURE_COMMAND cd . BUILD_COMMAND cd ../dablooms && make INSTALL_COMMAND cd ../dablooms && make install prefix=) diff --git a/vendor/dablooms-v1.0.0-20190904.tar.gz b/vendor/dablooms-v1.0.0-20190904.tar.gz deleted file mode 100644 index b2c81da..0000000 Binary files a/vendor/dablooms-v1.0.0-20190904.tar.gz and /dev/null differ diff --git a/vendor/dablooms-v1.0.1-20190922.tar.gz b/vendor/dablooms-v1.0.1-20190922.tar.gz new file mode 100644 index 0000000..68f1211 Binary files /dev/null and b/vendor/dablooms-v1.0.1-20190922.tar.gz differ