增加UDP相关链接计数
一个链接多命中同一个策略仅发送一条日志
This commit is contained in:
@@ -19,7 +19,7 @@
|
|||||||
#include "tsg_send_log.h"
|
#include "tsg_send_log.h"
|
||||||
#include "tsg_send_log_internal.h"
|
#include "tsg_send_log_internal.h"
|
||||||
|
|
||||||
char TSG_SEND_LOG_VERSION_20200617=0;
|
char TSG_SEND_LOG_VERSION_20200720=0;
|
||||||
struct tsg_log_instance_t *g_tsg_log_instance;
|
struct tsg_log_instance_t *g_tsg_log_instance;
|
||||||
|
|
||||||
|
|
||||||
@@ -32,7 +32,22 @@ const id2field_t tld_type[TLD_TYPE_MAX]={{TLD_TYPE_UNKNOWN, TLD_TYPE_UNKNOWN, "
|
|||||||
|
|
||||||
extern "C" int MESA_get_dev_ipv4(const char *device, int *ip_add);
|
extern "C" int MESA_get_dev_ipv4(const char *device, int *ip_add);
|
||||||
|
|
||||||
|
int is_multi_hit_same_policy(struct Maat_rule_t *result, int *policy_id, int *policy_id_num)
|
||||||
|
{
|
||||||
|
int j=0;
|
||||||
|
|
||||||
|
for(j=0;j<*policy_id_num;j++)
|
||||||
|
{
|
||||||
|
if(policy_id[j]==result->config_id)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
policy_id[(*policy_id_num)++]=result->config_id;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
unsigned long long tsg_get_stream_id(struct streaminfo * a_stream)
|
unsigned long long tsg_get_stream_id(struct streaminfo * a_stream)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
@@ -509,6 +524,8 @@ int tsg_send_log(struct tsg_log_instance_t *instance, struct TLD_handle_t *handl
|
|||||||
{
|
{
|
||||||
int i=0,status=0;
|
int i=0,status=0;
|
||||||
char *payload=NULL;
|
char *payload=NULL;
|
||||||
|
int repeat_cnt=0;
|
||||||
|
int policy_id[MAX_RESULT_NUM]={0};
|
||||||
struct TLD_handle_t *_handle=handle;
|
struct TLD_handle_t *_handle=handle;
|
||||||
struct tsg_log_instance_t *_instance=instance;
|
struct tsg_log_instance_t *_instance=instance;
|
||||||
|
|
||||||
@@ -532,6 +549,11 @@ int tsg_send_log(struct tsg_log_instance_t *instance, struct TLD_handle_t *handl
|
|||||||
|
|
||||||
for(i=0;i<log_msg->result_num; i++)
|
for(i=0;i<log_msg->result_num; i++)
|
||||||
{
|
{
|
||||||
|
if(is_multi_hit_same_policy(&(log_msg->result[i]), policy_id, &repeat_cnt))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
switch(log_msg->result[i].do_log)
|
switch(log_msg->result[i].do_log)
|
||||||
{
|
{
|
||||||
case LOG_ABORT:
|
case LOG_ABORT:
|
||||||
|
|||||||
@@ -205,6 +205,7 @@ static int _set_traffic_info(struct _traffic_info *from, struct _traffic_info *t
|
|||||||
static void *tsg_statistic_thread(void *arg)
|
static void *tsg_statistic_thread(void *arg)
|
||||||
{
|
{
|
||||||
long long value=0;
|
long long value=0;
|
||||||
|
long long total_value=0;
|
||||||
int value_len=sizeof(long long);
|
int value_len=sizeof(long long);
|
||||||
int thread_num=get_thread_count();
|
int thread_num=get_thread_count();
|
||||||
struct _traffic_info policy_traffic_info;
|
struct _traffic_info policy_traffic_info;
|
||||||
@@ -225,18 +226,33 @@ static void *tsg_statistic_thread(void *arg)
|
|||||||
_set_traffic_info(g_tsg_statis_para.traffic_info[TSG_ACTION_INTERCEPT], &policy_traffic_info, TSG_ACTION_INTERCEPT, thread_num);
|
_set_traffic_info(g_tsg_statis_para.traffic_info[TSG_ACTION_INTERCEPT], &policy_traffic_info, TSG_ACTION_INTERCEPT, thread_num);
|
||||||
|
|
||||||
value=0;
|
value=0;
|
||||||
|
total_value=0;
|
||||||
sapp_get_platform_opt(SPO_TCP_STREAM_ESTAB, (void *)&value, &value_len);
|
sapp_get_platform_opt(SPO_TCP_STREAM_ESTAB, (void *)&value, &value_len);
|
||||||
FS_operate(g_tsg_statis_para.fs2_handle, g_tsg_statis_para.fs_line_id, g_tsg_statis_para.fs_field_id[STATIS_ESTABLISHED_CON_NUM], FS_OP_SET, value);
|
total_value+=value;
|
||||||
|
value=0;
|
||||||
|
sapp_get_platform_opt(SPO_UDP_STREAM_CONCURRENT, (void *)&value, &value_len);
|
||||||
|
total_value+=value;
|
||||||
|
FS_operate(g_tsg_statis_para.fs2_handle, g_tsg_statis_para.fs_line_id, g_tsg_statis_para.fs_field_id[STATIS_ESTABLISHED_CON_NUM], FS_OP_SET, total_value);
|
||||||
|
|
||||||
value=0;
|
value=0;
|
||||||
|
total_value=0;
|
||||||
sapp_get_platform_opt(SPO_TCP_STREAM_CLOSE, (void *)&value, &value_len);
|
sapp_get_platform_opt(SPO_TCP_STREAM_CLOSE, (void *)&value, &value_len);
|
||||||
FS_operate(g_tsg_statis_para.fs2_handle, g_tsg_statis_para.fs_line_id, g_tsg_statis_para.fs_field_id[STATIS_CLOSE_CON_NUM], FS_OP_SET, value);
|
total_value+=value;
|
||||||
|
value=0;
|
||||||
|
sapp_get_platform_opt(SPO_UDP_STREAM_CLOSE, (void *)&value, &value_len);
|
||||||
|
total_value+=value;
|
||||||
|
FS_operate(g_tsg_statis_para.fs2_handle, g_tsg_statis_para.fs_line_id, g_tsg_statis_para.fs_field_id[STATIS_CLOSE_CON_NUM], FS_OP_SET, total_value);
|
||||||
|
|
||||||
value=0;
|
value=0;
|
||||||
|
total_value=0;
|
||||||
sapp_get_platform_opt(SPO_TCP_STREAM_NEW, (void *)&value, &value_len);
|
sapp_get_platform_opt(SPO_TCP_STREAM_NEW, (void *)&value, &value_len);
|
||||||
FS_operate(g_tsg_statis_para.fs2_handle, g_tsg_statis_para.fs_line_id, g_tsg_statis_para.fs_field_id[STATIS_NEW_CON_NUM], FS_OP_SET, value);
|
total_value+=value;
|
||||||
|
value=0;
|
||||||
|
sapp_get_platform_opt(SPO_UDP_STREAM_NEW, (void *)&value, &value_len);
|
||||||
|
total_value+=value;
|
||||||
|
FS_operate(g_tsg_statis_para.fs2_handle, g_tsg_statis_para.fs_line_id, g_tsg_statis_para.fs_field_id[STATIS_NEW_CON_NUM], FS_OP_SET, total_value);
|
||||||
|
|
||||||
total_traffic_info.con_num+=value;
|
total_traffic_info.con_num+=total_value;
|
||||||
|
|
||||||
value_len=sizeof(total_traffic_info.in_bytes);
|
value_len=sizeof(total_traffic_info.in_bytes);
|
||||||
sapp_get_platform_opt(SPO_TOTAL_INBOUND_BYTE, (void *)&total_traffic_info.in_bytes, &value_len);
|
sapp_get_platform_opt(SPO_TOTAL_INBOUND_BYTE, (void *)&total_traffic_info.in_bytes, &value_len);
|
||||||
|
|||||||
Reference in New Issue
Block a user