完成polling接口改造和重复流量识别功能

This commit is contained in:
崔一鸣
2019-09-04 18:58:50 +08:00
parent b01f282f34
commit 94e8c6184d
15 changed files with 886 additions and 641 deletions

View File

@@ -20,6 +20,7 @@
#define KNI_PATH_MAX 256
#define KNI_SYMBOL_MAX 64
#define KNI_DOMAIN_MAX 256
#define KNI_ADDR_MAX 128
#ifndef MAX
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
@@ -57,19 +58,26 @@ struct kni_tcpopt_info{
uint16_t mss;
uint8_t wscale_set;
uint8_t wscale;
uint8_t ts;
uint8_t ts_set;
uint8_t sack;
uint32_t ts_value;
};
//field_stat
#define KNI_FIELD_MAX 64
#define KNI_FS_FIELD_MAX 64
#define KNI_FS_COLUMN_MAX 256
#define KNI_FS_LINE_MAX 256
enum kni_field{
KNI_FIELD_INTCP_STM,
KNI_FIELD_BYP_STM,
KNI_FIELD_POLICY_BYP,
KNI_FIELD_PME_NEW_FAIL,
KNI_FIELD_NO_TFE,
KNI_FIELD_BYP_STM_POLICY,
KNI_FIELD_BYP_STM_PME_NEW_FAIL,
KNI_FIELD_BYP_STM_NO_TFE,
KNI_FIELD_BYP_STM_ERR,
KNI_FIELD_BYP_STM_DUP_TFC,
KNI_FIELD_STATE_UNKNOWN,
KNI_FIELD_DUP_TFC_STM,
//stream error
KNI_FIELD_STM_ERR,
KNI_FIELD_NO_SYN,
KNI_FIELD_SINGLE_DIR,
@@ -77,10 +85,9 @@ enum kni_field{
KNI_FIELD_NO_SA,
KNI_FIELD_ACTION_INVALID,
KNI_FIELD_NO_DATA,
KNI_FIELD_IPV4HDR_PARSE_FAIL,
KNI_FIELD_IPV6HDR_PARSE_FAIL,
KNI_FIELD_KA_ADD_FAIL,
KNI_FIELD_IPHDR_PARSE_FAIL,
KNI_FIELD_EXCEED_MTU,
KNI_FIELD_STMERR_TUPLE2STM_ADD_FAIL,
KNI_FIELD_SENDTO_TFE_FAIL,
//others
KNI_FIELD_NULL_PKT,
@@ -92,27 +99,43 @@ enum kni_field{
KNI_FIELD_SENDLOG_FAIL,
KNI_FIELD_PME_NEW_SUCC,
KNI_FIELD_PME_FREE,
KNI_FIELD_IPV4HDR_PARSE_FAIL,
KNI_FIELD_IPV6HDR_PARSE_FAIL,
KNI_FIELD_ID2PME_ADD_SUCC,
KNI_FIELD_ID2PME_ADD_FAIL,
KNI_FIELD_ID2PME_DEL_SUCC,
KNI_FIELD_ID2PME_DEL_FAIL,
KNI_FIELD_KEEPALIVE_REPLAY_ADD_SUCC,
KNI_FIELD_KEEPALIVE_REPLAY_DEL_SUCC,
KNI_FIELD_KEEPALIVE_REPLAY_DEL_FAIL,
KNI_FIELD_TUPLE2STM_ADD_SUCC,
KNI_FIELD_TUPLE2STM_ADD_FAIL,
KNI_FIELD_TUPLE2STM_DEL_SUCC,
KNI_FIELD_TUPLE2STM_DEL_FAIL,
KNI_FIELD_KNI_INTCP_BYTES,
KNI_FIELD_TFE_INTCP_BYTES,
KNI_FIELD_KNI_INTCP_STM,
KNI_FIELD_TFE_INTCP_STM,
KNI_FIELD_TUPLE2STM_SEARCH_SUCC,
KNI_FIELD_TUPLE2STM_SEARCH_FAIL,
KNI_FIELD_SAPP_INJECT_SUCC,
KNI_FIELD_SAPP_INJECT_FAIL,
KNI_FIELD_BLOOM_SEARCH_SUCC,
KNI_FIELD_BLOOM_SEARCH_FAIL,
KNI_FIELD_BLOOM_ADD_SUCC,
KNI_FIELD_BLOOM_ADD_FAIL,
//KNI_FIELD_TFE_STATUS_BASE must be last
KNI_FIELD_TFE_STATUS_BASE,
};
struct kni_field_stat_handle{
screen_stat_handle_t handle;
int fields[KNI_FIELD_MAX];
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{
addr_type_t addr_type;
union{
struct iphdr *v4;
struct ip6_hdr *v6;
@@ -135,7 +158,8 @@ enum kni_ipv6hdr_parse_error{
KNI_IPV6HDR_PARSE_ERROR_INVALID_TYPE = -3,
};
int kni_stream_addr_trans(const struct layer_addr *addr, addr_type_t addr_type, char *output, int len);
int kni_addr_trans_v4(struct stream_tuple4_v4 *tuple4, char *output, int len);
int kni_addr_trans_v6(struct stream_tuple4_v6 *tuple4, char *output, int len);
uint16_t kni_ip_checksum(const void *buf, size_t hdr_len);
uint16_t kni_tcp_checksum(const void *_buf, size_t len, in_addr_t src_addr, in_addr_t dest_addr);
uint16_t kni_tcp_checksum_v6(const void *_buf, size_t len, struct in6_addr src_addr, struct in6_addr dest_addr);