diff options
| -rw-r--r-- | bin/etc/sapp.toml | 1 | ||||
| -rw-r--r-- | include/private/sapp_global_val.h | 131 | ||||
| -rw-r--r-- | src/config/config_parse.cpp | 1 | ||||
| -rw-r--r-- | src/dealpkt/deal_tcp.c | 4 |
4 files changed, 70 insertions, 67 deletions
diff --git a/bin/etc/sapp.toml b/bin/etc/sapp.toml index 97bad75..a6edfb9 100644 --- a/bin/etc/sapp.toml +++ b/bin/etc/sapp.toml @@ -146,6 +146,7 @@ analyse_option_enabled=1 tuple4_reuse_time_interval=30 + #reorder_on_closing=1 #max_opening_per_sec=5000 #max_timeouts_per_sec=5000 diff --git a/include/private/sapp_global_val.h b/include/private/sapp_global_val.h index c2044fe..0cf0da0 100644 --- a/include/private/sapp_global_val.h +++ b/include/private/sapp_global_val.h @@ -18,9 +18,9 @@ enum pkt_dump_mode{ /* - vxlan��vlan_flipping�ǿ��Թ����, - vxlan������������, - vlan_flipping���ڱ����Լ�����, + vxlan��vlan_flipping�ǿ��Թ����, + vxlan������������, + vlan_flipping���ڱ����Լ�����, */ enum overlay_mode_config{ OVERLAY_MODE_NONE = 0, @@ -42,10 +42,10 @@ typedef struct{ typedef struct{ int worker_threads; - int send_only_threads_max_num; /* �������߳��������, �Dz����̬������, sapp������Ԥ֪, ֻ��������ֵ */ + int send_only_threads_max_num; /* �������߳��������, �Dz����̬������, sapp������Ԥ֪, ֻ��������ֵ */ int bind_mask_array_num; long bind_mask_array[SAPP_MAX_THREADS]; - long bind_mask; /* bind_mask_array�е�ÿ��������Ϊbit_indexת�ɵ�����ֵ */ + long bind_mask; /* bind_mask_array�е�ÿ��������Ϊbit_indexת�ɵ�����ֵ */ }sapp_config_cpu_t; @@ -65,8 +65,8 @@ typedef struct{ char *storge_path; int dump_all_thread_enabled; int dump_thread_id_array_num; - int dump_thread_id_array[SAPP_MAX_THREADS]; /* �û������ļ�ԭʼ����, ��ʽ: [0,1,2,3], ��ʾ��0,1,2,3���߳����ò��� */ - unsigned char dump_thread_id_mask[SAPP_MAX_THREADS]; /* ����ԭʼ������������������, ���߳�id��Ϊ�±�, ֵ��Ϊ0��ʾ��ǰ�߳̿�������, ֵ:{1,1,1,1} */ + int dump_thread_id_array[SAPP_MAX_THREADS]; /* �û������ļ�ԭʼ����, ��ʽ: [0,1,2,3], ��ʾ��0,1,2,3���߳����ò��� */ + unsigned char dump_thread_id_mask[SAPP_MAX_THREADS]; /* ����ԭʼ������������������, ���߳�id��Ϊ�±�, ֵ��Ϊ0��ʾ��ǰ�߳̿�������, ֵ:{1,1,1,1} */ int pkt_dump_ratio; /* capture one packet every 'pkt_dump_ratio' packets */ }sapp_config_tools_pktdump_t; @@ -81,13 +81,13 @@ typedef struct{ typedef struct{ - int auto_remedy; /* ƽ̨ȫ������, ����ÿ����, ��������auto_remedy_flag, ���ȼ�����ȫ��auto_remedy */ + int auto_remedy; /* ƽ̨ȫ������, ����ÿ����, ��������auto_remedy_flag, ���ȼ�����ȫ��auto_remedy */ int rst_signature_enable; int rst_num; int rst_signature_seed1; int rst_signature_seed2; int link_mss; - int remedy_kill_tcp_by_inline_device; /* ����FD����Чʱ, ����inline device�·�DROP���� */ + int remedy_kill_tcp_by_inline_device; /* ����FD����Чʱ, ����inline device�·�DROP���� */ }sapp_config_stream_tcp_inject_t; @@ -102,11 +102,12 @@ typedef struct{ int meaningful_statistics_minimum_byte; sapp_config_stream_tcp_inject_t inject; int well_known_ports_array_num; - unsigned short *well_known_ports_array; /* ���ڰ�data������ȷ��server�� */ + unsigned short *well_known_ports_array; /* ���ڰ�data������ȷ��server�� */ int closing_timeout; int opening_timeout; int max_timeouts_per_sec; int max_opening_per_sec; + int reorder_on_closing; }sapp_config_stream_tcp_t; @@ -115,7 +116,7 @@ typedef struct{ int timeout; int meaningful_statistics_minimum_pkt; int meaningful_statistics_minimum_byte; - unsigned short *well_known_ports_array; /* �����½�����ȷ��server��, ����4001->8000, ʵ������OICQ��C2S�������ݰ�,֮ǰ�İ汾�ᱻ��ʶ��ΪS2C����� */ + unsigned short *well_known_ports_array; /* �����½�����ȷ��server��, ����4001->8000, ʵ������OICQ��C2S�������ݰ�,֮ǰ�İ汾�ᱻ��ʶ��ΪS2C����� */ int well_known_ports_array_num; int max_timeouts_per_sec; int max_opening_per_sec; @@ -155,11 +156,11 @@ typedef struct{ int histogram_enabled; char process_latency_local_file[NAME_MAX]; int process_latency_refresh_interval_s; - int process_latency_threshold_in_us; /* �����ļ��ﵥλ��microsecond, ��Ҫ����1000 */ - /* ��ȷģʽ������, fs2����ͳ��Ҳ�dz���CPU, ÿ������Ҫ����FS_operate(), - ���ͣ�þ�ȷģʽ, ����fs2���DZ������һ��ʱ������ֵ, ��Сֵ����һ��ʱ���ƽ��ֵ, ������FS_operate()����, - ��ȷ�Ƚ�����һЩ, ���������˵���FS_operate()�Ĵ���. - ����pkt_latency_accurate_enable��ƽ��ֵ�����ǶԵ�, ������Ͳ���. + int process_latency_threshold_in_us; /* �����ļ��ﵥλ��microsecond, ��Ҫ����1000 */ + /* ��ȷģʽ������, fs2����ͳ��Ҳ�dz���CPU, ÿ������Ҫ����FS_operate(), + ���ͣ�þ�ȷģʽ, ����fs2���DZ������һ��ʱ������ֵ, ��Сֵ����һ��ʱ���ƽ��ֵ, ������FS_operate()����, + ��ȷ�Ƚ�����һЩ, ���������˵���FS_operate()�Ĵ���. + ����pkt_latency_accurate_enable��ƽ��ֵ�����ǶԵ�, ������Ͳ���. */ int process_latency_clock_id; @@ -171,7 +172,7 @@ typedef struct{ typedef struct{ char type_str[NAME_MAX]; /* pag,pcap,marsio */ char name[NAME_MAX]; - enum cap_mode_t type_bin; /* ���ַ���typeת��Ϊ��������ֵ */ + enum cap_mode_t type_bin; /* ���ַ���typeת��Ϊ��������ֵ */ }sapp_config_packet_io_interface_t; @@ -187,10 +188,10 @@ enum __sapp_config_packet_io_deployment_mode{ SAPP_CFG_PKT_IO_DEPOLY_MODE_TRANSPARENT, }; -#define MAX_VLAN_FLIPPING_MAP_NUM (4096) /* vlan_id���Χ��0~4095, ���鳤����4096 */ +#define MAX_VLAN_FLIPPING_MAP_NUM (4096) /* vlan_id���Χ��0~4095, ���鳤����4096 */ typedef struct{ - unsigned short couple_vlan_id; /* vlan flipping�dzɶԴ���, �����±��ʾһ��vlanid, Ԫ�ص�ֵ����һ��vlanid, host order */ + unsigned short couple_vlan_id; /* vlan flipping�dzɶԴ���, �����±��ʾһ��vlanid, Ԫ�ص�ֵ����һ��vlanid, host order */ unsigned char this_vlan_route_location; // 'C' or 'I' unsigned char mac_flipping_enable; }sapp_vlan_flipping_map_t; @@ -225,46 +226,46 @@ typedef struct{ typedef struct{ int enabled; - int get_cpu_usage_interval; //��λ:����, milliseconds(ms) - int smooth_avg_window; //�����N�ε�ƽ��ֵ����ʵʱֵ, ���ⶶ�� + int get_cpu_usage_interval; //��λ:����, milliseconds(ms) + int smooth_avg_window; //�����N�ε�ƽ��ֵ����ʵʱֵ, ���ⶶ�� double bypass_trigger_cpu_usage; double factor_decrease_ratio; double factor_increase_ratio; - int recovery_observe_time; //��λ:��, second(s) + int recovery_observe_time; //��λ:��, second(s) }sapp_under_ddos_config_t; typedef struct{ sapp_config_packet_io_tunnel_t packet_io_tunnel; const char *input_bpf_filter; char deployment_mode_str[NAME_MAX]; /* [mirror, inline, transparent, dumpfile] */ - enum sapp_deploment_mode_t deployment_mode_bin; /* ��������ڴ���, ת����ֵ��ʽ, ��1:mirror; 2:transparent; 3:inline��, ���: enum sapp_deploment_mode_t */ + enum sapp_deploment_mode_t deployment_mode_bin; /* ��������ڴ���, ת����ֵ��ʽ, ��1:mirror; 2:transparent; 3:inline��, ���: enum sapp_deploment_mode_t */ sapp_config_packet_io_dev_t internal; sapp_config_packet_io_dev_t external; char pcap_dumpfile_name[NAME_MAX]; - int polling_priority; /* call sapp_recv_pkt every call polling_entry times, ���ö��ٴ�polling�����һ��recv pkt, 1��ʾ�������ȼ���ͬ */ + int polling_priority; /* call sapp_recv_pkt every call polling_entry times, ���ö��ٴ�polling�����һ��recv pkt, 1��ʾ�������ȼ���ͬ */ int work_percent; - int without_usleep; /* ���ܲ���ģʽ, �������usleep, CPU��100% */ - int inbound_route_dir; /* ��ʾ�뾳, I2C�����ֵ��0����1 */ + int without_usleep; /* ���ܲ���ģʽ, �������usleep, CPU��100% */ + int inbound_route_dir; /* ��ʾ�뾳, I2C�����ֵ��0����1 */ char pcap_capture_direction[NAME_MAX]; /* in, out, inout */ char inject_pkt_mode_string[NAME_MAX]; - int inject_pkt_mode; /* ��ע�뷽ʽ������ֵ, ���: enum send_fake_packet_mode */ + int inject_pkt_mode; /* ��ע�뷽ʽ������ֵ, ���: enum send_fake_packet_mode */ int inject_pkt_prepend_segment_id; - unsigned short inject_mode_inline_device_sport; /* udp socket�ı���Դ�˿�, host order, ������ */ + unsigned short inject_mode_inline_device_sport; /* udp socket�ı���Դ�˿�, host order, ������ */ char inject_mode_single_gateway_device[NAME_MAX]; char inject_mode_single_gateway_src_mac_string[20]; char inject_mode_single_gateway_dst_mac_string[20]; - char inject_mode_single_gateway_dst_mac[6]; /* gateway��MAC */ - char inject_mode_single_gateway_src_mac[6]; /* inject_mode_single_gateway_device������MAC */ - int monitor_thread_enabled; /* ����ģʽ�˳�֮ǰ, Ϊ��ijЩ�߳��ܻ�д��־, �첽�������ݵȲ���, ��sleepһ�� */ - sapp_dup_pkt_t dup_pkt_para; /* �ظ�����ʶ�� */ + char inject_mode_single_gateway_dst_mac[6]; /* gateway��MAC */ + char inject_mode_single_gateway_src_mac[6]; /* inject_mode_single_gateway_device������MAC */ + int monitor_thread_enabled; /* ����ģʽ�˳�֮ǰ, Ϊ��ijЩ�߳��ܻ�д��־, �첽�������ݵȲ���, ��sleepһ�� */ + sapp_dup_pkt_t dup_pkt_para; /* �ظ�����ʶ�� */ char extract_linkdir_from_mac_sntax_raw_string[32]; char extract_linkdir_from_mac_enabled; - unsigned char extract_linkdir_from_mac_byte_index; /* ��mac��ַ�ĵڼ����ֽڻ�ȡ��·����, ��0��ʼ��11����, �ܼ�12�ֽ� */ - unsigned char extract_linkdir_from_mac_bit_value; /* ��ij���ֽڻ�ȡ��·�����bitֵ, ������index, ����ֱ�ӽ���&���� */ + unsigned char extract_linkdir_from_mac_byte_index; /* ��mac��ַ�ĵڼ����ֽڻ�ȡ��·����, ��0��ʼ��11����, �ܼ�12�ֽ� */ + unsigned char extract_linkdir_from_mac_bit_value; /* ��ij���ֽڻ�ȡ��·�����bitֵ, ������index, ����ֱ�ӽ���&���� */ sapp_under_ddos_config_t under_ddos_config; - short not_exit_for_dumpfile_mode; /* �����������˳�����, �������Բ���, ���ѭ����ȡ����� */ + short not_exit_for_dumpfile_mode; /* �����������˳�����, �������Բ���, ���ѭ����ȡ����� */ short infinite_loop_enabled; short destroy_all_plug_enabled; short dlclose_all_plug_enabled; @@ -277,7 +278,7 @@ typedef struct{ typedef struct{ const char *cfg_files_root_dir; - const char *cfg_main_entry_relative; /* �������ļ�, �̶���sapp.toml, ·�����Կ�-c����ָ�� */ + const char *cfg_main_entry_relative; /* �������ļ�, �̶���sapp.toml, ·�����Կ�-c����ָ�� */ const char *cfg_main_entry_absolute; /* /home/project_xxx/sapp/sapp.toml */ const char *cfg_sapp_log_relative; @@ -301,7 +302,7 @@ typedef struct{ const char *cfg_file_inline_dev_relative; const char *cfg_file_inline_dev_absolute; - const char *cfg_file_necessary_plug_relative; /* ��Ҫ����б�, �������ʧ��sapp���˳� */ + const char *cfg_file_necessary_plug_relative; /* ��Ҫ����б�, �������ʧ��sapp���˳� */ const char *cfg_file_necessary_plug_absolute; const char *cfg_file_stream_compare_layer_relative; @@ -347,17 +348,17 @@ typedef struct{ }sapp_data_file_link_t; typedef struct{ - const char *libmarsio_file_path; /* libmarsio.so�Ƕ�̬dlopen��, ��sapp���Ȳ�һ��֪�����ĸ�·��, �������ļ���ȡ */ + const char *libmarsio_file_path; /* libmarsio.so�Ƕ�̬dlopen��, ��sapp���Ȳ�һ��֪�����ĸ�·��, �������ļ���ȡ */ }sapp_library_file_link_t; typedef struct{ - int ipv6_decapsulation_enabled; /* �Ƿ����ipv6���ݰ� */ - int ipv6_send_packet_enabled; /* �Ƿ�֧�ַ���ipv6���ݰ�, ��������ϵͳipv6�ں�ģ���Ƿ���� */ - int tcp_drop_pure_ack_pkt; /* ����û�и��صĴ�ack��, ���Խ�Լһ��������ѯ, ����ҵ���������� */ - int tcp_syn_option_parse_enabled; /* �Ƿ����tcp syn��ͷ��ѡ�� */ - int skip_not_ip_layer_over_eth; /* ������ip��, ��֤�ڲ���ģʽ��, ����ͨ��ϵͳ·�ɷ���rst�� */ - int reverse_ethernet_addr_enabled; /* smac��ַ�а���������Ϣʱ���跭ת */ - int skip_gtp_S_PN_E_field_for_inject; /* GTP����ע�����ݰ�ʱ������չ�ֶ�:sequence,N-PDU, extension */ + int ipv6_decapsulation_enabled; /* �Ƿ����ipv6���ݰ� */ + int ipv6_send_packet_enabled; /* �Ƿ�֧�ַ���ipv6���ݰ�, ��������ϵͳipv6�ں�ģ���Ƿ���� */ + int tcp_drop_pure_ack_pkt; /* ����û�и��صĴ�ack��, ���Խ�Լһ��������ѯ, ����ҵ���������� */ + int tcp_syn_option_parse_enabled; /* �Ƿ����tcp syn��ͷ��ѡ�� */ + int skip_not_ip_layer_over_eth; /* ������ip��, ��֤�ڲ���ģʽ��, ����ͨ��ϵͳ·�ɷ���rst�� */ + int reverse_ethernet_addr_enabled; /* smac��ַ�а���������Ϣʱ���跭ת */ + int skip_gtp_S_PN_E_field_for_inject; /* GTP����ע�����ݰ�ʱ������չ�ֶ�:sequence,N-PDU, extension */ int ipv4_reassembly_enabled; int ipv6_reassembly_enabled; }sapp_protocol_feature_t; @@ -404,29 +405,29 @@ typedef struct{ void *sapp_timer_handle[SAPP_MAX_THREADS]; void *sapp_standalone_timer; time_t sapp_start_time; - int deployment_mode_private; /* ��������sapp_global_val->config.packet_io.deployment_mode_binת���õ����ڲ�ֵ,����:NET_CONN_PARALLEL */ - unsigned char create_stream_mode; /* ����ԭ������, ֵ������stream.tcp.syn_mandatoryת���õ� */ + int deployment_mode_private; /* ��������sapp_global_val->config.packet_io.deployment_mode_binת���õ����ڲ�ֵ,����:NET_CONN_PARALLEL */ + unsigned char create_stream_mode; /* ����ԭ������, ֵ������stream.tcp.syn_mandatoryת���õ� */ int packet_io_cap_level; sapp_gval_individual_fixed_fs2_t fs2_runtime; sapp_gval_individual_fixed_fs3_t fs3_runtime; - pthread_t thread_obtain_id[SAPP_MAX_THREADS]; /* pthread_create���ص�id */ - pid_t thread_tid[SAPP_MAX_THREADS]; /* gdb �� top �鿴��id */ + pthread_t thread_obtain_id[SAPP_MAX_THREADS]; /* pthread_create���ص�id */ + pid_t thread_tid[SAPP_MAX_THREADS]; /* gdb �� top �鿴��id */ pthread_t thread_timer_event_id; pthread_t thread_timer_loop_id; - int cpu_bind_core_id_per_thread[SAPP_MAX_THREADS]; /* ���������bind_mask, ��¼ÿ��IO�����̰߳�cpu core id */ + int cpu_bind_core_id_per_thread[SAPP_MAX_THREADS]; /* ���������bind_mask, ��¼ÿ��IO�����̰߳�cpu core id */ void *breakpad; - char overlay_layer_def[__ADDR_TYPE_MAX][SAPP_SUPPORT_LAYER_NUM_MAX]; /* ��ʾ��ԭʼ���Ļ����Ϸ�װ������, ��vxlan, ��Щ�㲻Ӧ�õ��ò��, ��עʱ��Ҫ����� */ - char prune_layer_def[__ADDR_TYPE_MAX][SAPP_SUPPORT_LAYER_NUM_MAX]; /* ��ʾע���ʱ��Ҫ�����IJ�, ���ڴ�������������ļ�: skip_not_iop_layer, ����vlan, mpls��, ����mirrorģʽ��, ������ע��㲻һ�������绷�� */ + char overlay_layer_def[__ADDR_TYPE_MAX][SAPP_SUPPORT_LAYER_NUM_MAX]; /* ��ʾ��ԭʼ���Ļ����Ϸ�װ������, ��vxlan, ��Щ�㲻Ӧ�õ��ò��, ��עʱ��Ҫ����� */ + char prune_layer_def[__ADDR_TYPE_MAX][SAPP_SUPPORT_LAYER_NUM_MAX]; /* ��ʾע���ʱ��Ҫ�����IJ�, ���ڴ�������������ļ�: skip_not_iop_layer, ����vlan, mpls��, ����mirrorģʽ��, ������ע��㲻һ�������绷�� */ void *under_ddos_handle; pthread_t gdev_keepalive_log_thread_id; }sapp_gval_individual_fixed_t; typedef struct{ - unsigned long long count[SAPP_STAT_NUM_MAX]; /* ������, �����, �½�������, ������������ */ - unsigned long long length[SAPP_STAT_NUM_MAX]; /* ������, �����ݰ����ֽ��� */ + unsigned long long count[SAPP_STAT_NUM_MAX]; /* ������, �����, �½�������, ������������ */ + unsigned long long length[SAPP_STAT_NUM_MAX]; /* ������, �����ݰ����ֽ��� */ unsigned long long count_per_layer[__ADDR_TYPE_MAX][SAPP_SUPPORT_LAYER_NUM_MAX]; unsigned long long length_per_layer[__ADDR_TYPE_MAX][SAPP_SUPPORT_LAYER_NUM_MAX]; unsigned long long count_project_in_use[PROJECT_REQ_MAX_PLUG_NUM]; @@ -435,7 +436,7 @@ typedef struct{ typedef struct{ - int stat_count; /* һ��ʱ����, ��¼�����ݰ���ʱ����, time_cost_sum/stat_count��ƽ����ʱ */ + int stat_count; /* һ��ʱ����, ��¼�����ݰ���ʱ����, time_cost_sum/stat_count��ƽ����ʱ */ int min_time_cost; int max_time_cost; long long time_cost_sum; @@ -448,11 +449,11 @@ typedef struct{ struct __sapp_gval_mthread{ sapp_gval_mthread_sys_stat_t sys_stat; - unsigned short stream_seq_per_thread; /* ���ڼ���ȫ����ID */ + unsigned short stream_seq_per_thread; /* ���ڼ���ȫ����ID */ sapp_fuzzy_latency_stat_t fuzzy_pkt_latency_stat_per_thread; sapp_fuzzy_latency_stat_t fuzzy_pkt_latency_stat_per_entry_per_thread[SAPP_MAX_PLUG_ENTRY_NUM]; - const raw_pkt_t *raw_pkt; /* ��ΪMESA_fakepacket_send_xxxϵ�к���û��raw_pkt����, Ҳû��stream_info, Ϊ����ǰ����, �����Ľӿ�, ����ȫ�ֱ������ڴ洢��ǰ�� */ - void *dup_pkt_distinguish_handle; /* ����������ڿ���, inject, ipv4_tcp, ipv4_udp, ��ͬʹ��һ��bloom��� */ + const raw_pkt_t *raw_pkt; /* ��ΪMESA_fakepacket_send_xxxϵ�к���û��raw_pkt����, Ҳû��stream_info, Ϊ����ǰ����, �����Ľӿ�, ����ȫ�ֱ������ڴ洢��ǰ�� */ + void *dup_pkt_distinguish_handle; /* ����������ڿ���, inject, ipv4_tcp, ipv4_udp, ��ͬʹ��һ��bloom��� */ volatile int destory_env_done; //0:do nothing; 1:doing; 2:done sapp_mem_used_stat_t mem_used_stat; }__attribute__ ((aligned (64))); /* for multi-thread, must 64byte alignment */ @@ -461,8 +462,8 @@ typedef struct __sapp_gval_mthread sapp_gval_mthread_t; struct __sapp_gval_individual_volatile{ volatile int current_state; /* refer to enum sapp_state_t */ - volatile int recv_signal_SIGTERM; /* �յ�SIGTERM�ź�, ���ŵ��˳� */ - sapp_mem_used_stat_t mem_used_stat; /* ȫ�ֱ������ʼ���Ͳ�����ڴ� */ + volatile int recv_signal_SIGTERM; /* �յ�SIGTERM�ź�, ���ŵ��˳� */ + sapp_mem_used_stat_t mem_used_stat; /* ȫ�ֱ������ʼ���Ͳ�����ڴ� */ }__attribute__ ((aligned (64))); typedef struct __sapp_gval_individual_volatile sapp_gval_individual_volatile_t; @@ -470,17 +471,17 @@ typedef struct __sapp_gval_individual_volatile sapp_gval_individual_volatile_t; typedef struct{ sapp_cmd_args_val_t **cmd_args_array; int cmd_args_num; - char **dumpfie_list_array; /* ����--dumpfile-list����ִ�к�, �õ����ļ��б�, �ַ���ָ������ */ - int slient_mode; /* ��Ĭģʽ, ǰ̨������κ���Ϣ */ + char **dumpfie_list_array; /* ����--dumpfile-list����ִ�к�, �õ����ļ��б�, �ַ���ָ������ */ + int slient_mode; /* ��Ĭģʽ, ǰ̨������κ���Ϣ */ }sapp_cla_t; typedef struct{ sapp_cla_t cla; sapp_config_t config; - sapp_gval_individual_fixed_t individual_fixed; /* ��ʼ�����ٸı�ı��� */ - sapp_gval_individual_volatile_t *individual_volatile; /* �����������ʵʱ���µĶ������� */ - sapp_gval_mthread_t *mthread_volatile[SAPP_MAX_THREADS]; /* �����������ʵʱ���µĶ��̱߳��� */ + sapp_gval_individual_fixed_t individual_fixed; /* ��ʼ�����ٸı�ı��� */ + sapp_gval_individual_volatile_t *individual_volatile; /* �����������ʵʱ���µĶ������� */ + sapp_gval_mthread_t *mthread_volatile[SAPP_MAX_THREADS]; /* �����������ʵʱ���µĶ��̱߳��� */ }sapp_global_t; extern embed_layer_t g_stream_compare_layer_set; diff --git a/src/config/config_parse.cpp b/src/config/config_parse.cpp index 6977080..5b7d0f4 100644 --- a/src/config/config_parse.cpp +++ b/src/config/config_parse.cpp @@ -1766,6 +1766,7 @@ int sapp_parse_config(void) tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"stream.tcp", (char *)"timeout", (int *)&pconfig->stream.tcp.timeout, 180); tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"stream.tcp", (char *)"syn_mandatory", (int *)&pconfig->stream.tcp.syn_mandatory, 1); tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"stream.tcp", (char *)"reorder_pkt_max", (int *)&pconfig->stream.tcp.reorder_pkt_max, 5); + tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"stream.tcp", (char *)"reorder_on_closing", (int *)&pconfig->stream.tcp.reorder_on_closing, 1); tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"stream.tcp", (char *)"analyse_option_enabled", (int *)&pconfig->stream.tcp.analyse_option_enabled, 1); tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"stream.tcp", (char *)"tuple4_reuse_time_interval", (int *)&pconfig->stream.tcp.tuple4_reuse_time_interval, 30); tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"stream.tcp", (char *)"meaningful_statistics_minimum_pkt", (int *)&pconfig->stream.tcp.meaningful_statistics_minimum_pkt, 3); diff --git a/src/dealpkt/deal_tcp.c b/src/dealpkt/deal_tcp.c index 1ef5b48..5a4b72a 100644 --- a/src/dealpkt/deal_tcp.c +++ b/src/dealpkt/deal_tcp.c @@ -2201,7 +2201,7 @@ static int tcp_deal_unorder(struct streamindex *pindex,struct streaminfo *a_tcp, { pdetail_pr->flow_stat->S2C_ooorder_pkt++; } - if(orderflag==CHECK_ORDER_DATA) + if(orderflag==CHECK_ORDER_DATA || sapp_global_val->config.stream.tcp.reorder_on_closing == 1) { stream_process_tcp(a_tcp,unorder_packet->this_ip_hdr, unorder_packet->this_tcp_hdr, &(unorder_packet->raw_pkt),&(pdetail_pr->apme),&(a_tcp->opstate)); } @@ -2249,7 +2249,7 @@ static int tcp_deal_unorder(struct streamindex *pindex,struct streaminfo *a_tcp, { pdetail_pr->flow_stat->S2C_ooorder_pkt++; } - if(orderflag==CHECK_ORDER_DATA) + if(orderflag==CHECK_ORDER_DATA || sapp_global_val->config.stream.tcp.reorder_on_closing == 1) { ret=stream_process_tcp(a_tcp,unorder_packet->this_ip_hdr,unorder_packet->this_tcp_hdr,&(unorder_packet->raw_pkt),&(pdetail_pr->apme),&(a_tcp->opstate)); } |
