summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authoryangwei <[email protected]>2023-08-24 01:36:15 +0800
committeryangwei <[email protected]>2023-08-24 01:36:15 +0800
commit3273eec2b168d22126e04ce90f3e9a6c7e49b746 (patch)
tree443d0a7f50fabb5fbd33160d134b77881a416f9c /include
parentf50d3a28758b1cf913d35a977838369ee845be93 (diff)
🦄 refactor(duplicate_pkt): 简化重复包识别函数封装,v4/v6和TCP/UDP使用同一接口
Diffstat (limited to 'include')
-rw-r--r--include/private/duplicate_pkt_distinguish.h30
1 files changed, 13 insertions, 17 deletions
diff --git a/include/private/duplicate_pkt_distinguish.h b/include/private/duplicate_pkt_distinguish.h
index a58e062..cb47963 100644
--- a/include/private/duplicate_pkt_distinguish.h
+++ b/include/private/duplicate_pkt_distinguish.h
@@ -21,24 +21,24 @@ struct sapp_dup_key_ip6_tuple{
struct in6_addr dip;
};
-struct __sapp_dup_pkt_key_v4{
- struct sapp_dup_key_ip4_tuple ip_addr;
+struct __sapp_dup_pkt_key_l4{
unsigned int tcp_seq;
unsigned int tcp_ack;
unsigned short sport;
unsigned short dport;
- unsigned short ip_id; /* TCP层SYN重传时, 或者应用层重传数据, ipid是不一样的, 其实不能算为重复包, 所以ipid也作为Key */
unsigned short checksum; /* tcp or udp */
}__attribute__((packed, aligned(1)));
+struct __sapp_dup_pkt_key_v4{
+ struct __sapp_dup_pkt_key_l4 l4;
+ unsigned short ip_id; /* TCP层SYN重传时, 或者应用层重传数据, ipid是不一样的, 其实不能算为重复包, 所以ipid也作为Key */
+ struct sapp_dup_key_ip4_tuple ip_addr;
+}__attribute__((packed, aligned(1)));
+
struct __sapp_dup_pkt_key_v6{
+ struct __sapp_dup_pkt_key_l4 l4;
struct sapp_dup_key_ip6_tuple ip_addr;
- unsigned int tcp_seq;
- unsigned int tcp_ack;
- unsigned short sport;
- unsigned short dport;
- unsigned short checksum; /* tcp or udp */
}__attribute__((packed, aligned(1)));
typedef struct __sapp_dup_pkt_key_v4 sapp_dup_pkt_key_v4_t;
@@ -46,18 +46,14 @@ typedef struct __sapp_dup_pkt_key_v6 sapp_dup_pkt_key_v6_t;
int sapp_dup_pkt_init(void);
+void sapp_dup_pkt_destroy(void);
-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);
+void sapp_dup_pkt_mark_l4(struct streaminfo *a_stream, const void *ip_hdr, const void *l4_hdr);
+void sendpkt_dup_pkt_mark_stream(struct streaminfo *top_stream, const char *ip_hdr);
-int sapp_dup_pkt_identify_tcp(int tid, struct streaminfo_private *pstream_pr,
- const void *ip_hdr, const struct mesa_tcp_hdr *tcp_h, int add_filter);
-int sapp_dup_pkt_identify_udp_v4(int tid, struct streaminfo_private *pstream_pr,
- const struct mesa_ip4_hdr *ipv4_hdr, const struct mesa_udp_hdr *udp_h, int add_filter);
-int sapp_dup_pkt_identify_udp_v6(int tid, struct streaminfo_private *pstream_pr,
- const struct mesa_ip6_hdr *ipv6_hdr, const struct mesa_udp_hdr *udp_h);
+int sapp_dup_pkt_identify(int tid, struct streaminfo_private *pstream_pr,
+ const void *ip_hdr, const void *l4_hdr, int need_add_bloom_filter);
#endif