summaryrefslogtreecommitdiff
path: root/include/private/duplicate_pkt_distinguish.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/private/duplicate_pkt_distinguish.h')
-rw-r--r--include/private/duplicate_pkt_distinguish.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/include/private/duplicate_pkt_distinguish.h b/include/private/duplicate_pkt_distinguish.h
index d76e23a..1d0f1ee 100644
--- a/include/private/duplicate_pkt_distinguish.h
+++ b/include/private/duplicate_pkt_distinguish.h
@@ -4,6 +4,7 @@
#include "mesa_net.h"
#include "stream_internal.h"
+#define SAPP_DUP_FIRST_PKT_NUM (3) /* 通过前N个包识别是否有重复流量 */
/* 网络序, network order */
@@ -26,7 +27,7 @@ struct __sapp_dup_pkt_key_v4{
unsigned int tcp_ack;
unsigned short sport;
unsigned short dport;
- unsigned short ip_id; /* TCP层SYN重传时, ipid是不一样的, 其实不能算为重复包 */
+ unsigned short ip_id; /* TCP层SYN重传时, 或者应用层重传数据, ipid是不一样的, 其实不能算为重复包, 所以ipid也作为Key */
unsigned short checksum; /* tcp or udp */
}__attribute__((packed, aligned(1)));
@@ -46,7 +47,10 @@ typedef struct __sapp_dup_pkt_key_v6 sapp_dup_pkt_key_v6_t;
int sapp_dup_pkt_init(void);
-void sapp_dup_pkt_mark_tcp(int tid, const struct streaminfo *pstream, const void *ip_hdr, const struct mesa_tcp_hdr *tcp_h);
+void sapp_dup_pkt_mark_tcp(int tid, unsigned char addr_type, const void *ip_hdr, const struct mesa_tcp_hdr *tcp_h);
+void sapp_dup_pkt_mark_udp(int tid, unsigned char addrtype, const void *ip_hdr, const struct mesa_udp_hdr *udp_h);
+void sendpkt_dup_pkt_mark_stream(const struct streaminfo *top_stream, const char *ip_hdr);
+
int sapp_dup_pkt_identify_tcp(int tid, struct streaminfo_private *pstream_pr, int tot_pkt,
const void *ip_hdr, const struct mesa_tcp_hdr *tcp_h);