diff options
| author | yangwei <[email protected]> | 2023-08-24 01:36:15 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2023-08-24 01:36:15 +0800 |
| commit | 3273eec2b168d22126e04ce90f3e9a6c7e49b746 (patch) | |
| tree | 443d0a7f50fabb5fbd33160d134b77881a416f9c /include | |
| parent | f50d3a28758b1cf913d35a977838369ee845be93 (diff) | |
🦄 refactor(duplicate_pkt): 简化重复包识别函数封装,v4/v6和TCP/UDP使用同一接口
Diffstat (limited to 'include')
| -rw-r--r-- | include/private/duplicate_pkt_distinguish.h | 30 |
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 |
