[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <1496876770.736.49.camel@edumazet-glaptop3.roam.corp.google.com>
Date: Wed, 07 Jun 2017 16:06:10 -0700
From: Eric Dumazet <eric.dumazet@...il.com>
To: Chenbo Feng <chenbofeng.kernel@...il.com>
Cc: netdev@...r.kernel.org, Lorenzo Colitti <lorenzo@...gle.com>,
Alexei Starovoitov <alexei.starovoitov@...il.com>,
Daniel Borkmann <daniel@...earbox.net>,
Chenbo Feng <fengc@...gle.com>
Subject: Re: Question about tcp_filter() in tcp_v6_do_rcv()
On Wed, 2017-06-07 at 15:35 -0700, Chenbo Feng wrote:
> 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.
It seems this was added in this commit
commit 5234b9f7d650fe64975695d835cb9413e1d75f46
Author: James Morris <jmorris@...ercode.com.au>
Date: Thu Feb 6 09:49:40 2003 -0800
[LSM]: Networking socket SKB receive hook.
You can find the history tree in :
[remote "origin"]
url = git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
fetch = +refs/heads/*:refs/remotes/origin/*
The call from tcp_v6_do_rcv() should be removed I guess
Powered by blists - more mailing lists