From 8e7e9da519316754a297068a8e1a7b7bc406827c Mon Sep 17 00:00:00 2001 From: fumingwei Date: Mon, 18 May 2020 12:04:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E8=AF=81pinnig=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E8=AE=A1=E6=95=B0=E6=97=B6=E9=97=B4=E4=B8=8Eintecept=E7=9A=84?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E8=AE=A1=E6=95=B0=E6=97=B6=E9=97=B4=E4=BF=9D?= =?UTF-8?q?=E6=8C=81=E4=B8=80=E8=87=B4=E7=BB=9F=E8=AE=A1tntercept=E5=8A=A8?= =?UTF-8?q?=E4=BD=9C=E6=94=BE=E5=85=A5kni,=E4=BF=AE=E6=94=B9tsg=5Fentry?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entry/src/kni_entry.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/entry/src/kni_entry.cpp b/entry/src/kni_entry.cpp index a639a32..8a9245e 100644 --- a/entry/src/kni_entry.cpp +++ b/entry/src/kni_entry.cpp @@ -28,6 +28,7 @@ extern "C" { } #endif #include "kni_tun.h" +#include "tsg/tsg_statistic.h" struct kni_handle *g_kni_handle = NULL; struct kni_field_stat_handle *g_kni_fs_handle = NULL; @@ -122,6 +123,7 @@ struct pme_info{ int has_dup_syn_ack; struct dup_traffic_dabloom_key *syn_packet; struct dup_traffic_dabloom_key *syn_ack_packet; + struct _traffic_info traffic_info; }; struct wrapped_packet{ @@ -344,6 +346,7 @@ static int log_generate(struct pme_info *pmeinfo){ ret, pmeinfo->stream_traceid); goto error_out; } + tsg_set_intercept_flow(&pmeinfo->maat_result, &pmeinfo->traffic_info,0); FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_SENDLOG_SUCC], 0, FS_OP_ADD, 1); return 0; @@ -1265,12 +1268,31 @@ static char data_opstate(struct streaminfo *stream, struct pme_info *pmeinfo, co return APP_STATE_FAWPKT | APP_STATE_GIVEME; } +static int kni_set_policy_into_pem_info(const struct streaminfo *a_stream, struct pme_info *pmeinfo) +{ + struct _traffic_info *traffic_info = &(pmeinfo->traffic_info); + int value_len=sizeof(unsigned long long); + if(a_stream == NULL || pmeinfo == NULL) + return -1; + traffic_info->con_num = 1; + + MESA_get_stream_opt(a_stream, MSO_TOTAL_INBOUND_BYTE, (void *)&traffic_info->in_bytes, &value_len); + + MESA_get_stream_opt(a_stream, MSO_TOTAL_INBOUND_PKT, (void *)&traffic_info->in_packets, &value_len); + + MESA_get_stream_opt(a_stream, MSO_TOTAL_OUTBOUND_BYTE, (void *)&traffic_info->out_bytes, &value_len); + + MESA_get_stream_opt(a_stream, MSO_TOTAL_OUTBOUND_PKT, (void *)&traffic_info->out_packets, &value_len); + + return 0; +} static char close_opstate(const struct streaminfo *stream, struct pme_info *pmeinfo, int thread_seq){ //close: because of timeout, return value has no meaning switch(pmeinfo->action){ case KNI_ACTION_INTERCEPT: TLD_append_streaminfo(g_tsg_log_instance, pmeinfo->tld_handle, (struct streaminfo*)pmeinfo->stream); + kni_set_policy_into_pem_info(stream,pmeinfo); //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)));