Hello everybody,
I am testing eBPF programs on ipv6 and I just find out the tcp_filter()
function (previously named sk_filter()) is called both in tcp_v6_rcv()
and tcp_v6_do_rcv(). In contrast, it is only called by tcp_v4_rcv() in
ipv4 layer. I guess this implementation is used to capture some corner
cases in ipv6 ingress route but I cannot find why. Could I know why we
need this in two similar places in ipv6 transportation layer?
I have tried to dig into the commit history and the related code path
but I did not see any obvious reason for doing so. And my problem with
it is when a eBPF program is attached to a socket or a cgroup in ingress
side, the filter program will be applied on some packets twice. And it
affect the accuracy when using eBPF program for traffic accounting.
Thanks!
Chenbo Feng
- Question about tcp_filter() in tcp_v6_do_rcv() Chenbo Feng
-