diff --git a/src/zfw_tc_ingress.c b/src/zfw_tc_ingress.c index a25fd12..085bc8e 100644 --- a/src/zfw_tc_ingress.c +++ b/src/zfw_tc_ingress.c @@ -1969,6 +1969,7 @@ int bpf_sk_splice(struct __sk_buff *skb){ rk.ifindex = event.ifindex; rk.__in46_u_dest.ip = tcp_state_key.__in46_u_src.ip; rk.__in46_u_src.ip = tcp_state_key.__in46_u_dst.ip; + rk.protocol = IPPROTO_TCP; struct masq_value *rv = get_reverse_masquerade(rk); if(rv){ struct masq_key mk = {0}; @@ -1976,6 +1977,7 @@ int bpf_sk_splice(struct __sk_buff *skb){ mk.sport = rv->o_sport; mk.__in46_u_dest.ip = iph->saddr; mk.ifindex = event.ifindex; + mk.protocol = IPPROTO_TCP; del_masq(mk); } del_reverse_masq(rk); @@ -1999,6 +2001,7 @@ int bpf_sk_splice(struct __sk_buff *skb){ rk.ifindex = event.ifindex; rk.__in46_u_dest.ip = tcp_state_key.__in46_u_src.ip; rk.__in46_u_src.ip = tcp_state_key.__in46_u_dst.ip; + rk.protocol = IPPROTO_TCP; struct masq_value *rv = get_reverse_masquerade(rk); if(rv){ struct masq_key mk = {0}; @@ -2006,6 +2009,7 @@ int bpf_sk_splice(struct __sk_buff *skb){ mk.sport = rv->o_sport; mk.__in46_u_dest.ip = iph->saddr; mk.ifindex = event.ifindex; + mk.protocol = IPPROTO_TCP; del_masq(mk); } del_reverse_masq(rk); diff --git a/src/zfw_tc_outbound_track.c b/src/zfw_tc_outbound_track.c index 4a368b0..67ab0bf 100644 --- a/src/zfw_tc_outbound_track.c +++ b/src/zfw_tc_outbound_track.c @@ -2431,12 +2431,14 @@ int bpf_sk_splice6(struct __sk_buff *skb){ rk.ifindex = event.ifindex; rk.__in46_u_dest.ip = tcp_state_key.__in46_u_dst.ip; rk.__in46_u_src.ip = tcp_state_key.__in46_u_src.ip; + rk.protocol = IPPROTO_TCP; del_reverse_masq(rk); struct masq_key mk = {0}; mk.dport = tcph->dest; mk.sport = tcph->source; mk.__in46_u_dest.ip = iph->daddr; mk.ifindex = event.ifindex; + mk.protocol = IPPROTO_TCP; del_masq(mk); } del_tcp(tcp_state_key); @@ -2469,12 +2471,14 @@ int bpf_sk_splice6(struct __sk_buff *skb){ rk.ifindex = event.ifindex; rk.__in46_u_dest.ip = tcp_state_key.__in46_u_dst.ip; rk.__in46_u_src.ip = tcp_state_key.__in46_u_src.ip; + rk.protocol = IPPROTO_TCP; del_reverse_masq(rk); struct masq_key mk = {0}; mk.dport = tcph->dest; mk.sport = tcph->source; mk.__in46_u_dest.ip = iph->daddr; mk.ifindex = event.ifindex; + mk.protocol = IPPROTO_TCP; del_masq(mk); } del_tcp(tcp_state_key);