From: Stanislav Fomichev <sdf@google.com>
To: Gilad Sever <gilad9366@gmail.com>
Cc: dsahern@kernel.org, martin.lau@linux.dev, daniel@iogearbox.net,
john.fastabend@gmail.com, ast@kernel.org, andrii@kernel.org,
song@kernel.org, yhs@fb.com, kpsingh@kernel.org,
haoluo@google.com, jolsa@kernel.org, davem@davemloft.net,
edumazet@google.com, kuba@kernel.org, pabeni@redhat.com,
mykolal@fb.com, shuah@kernel.org, hawk@kernel.org,
joe@wand.net.nz, eyal.birger@gmail.com,
shmulik.ladkani@gmail.com, bpf@vger.kernel.org,
netdev@vger.kernel.org, linux-kselftest@vger.kernel.org
Subject: Re: [PATCH bpf,v3 2/4] bpf: Call __bpf_sk_lookup()/__bpf_skc_lookup() directly via TC hookpoint
Date: Thu, 27 Apr 2023 11:03:40 -0700 [thread overview]
Message-ID: <ZEq4/JAgLRCKEeQr@google.com> (raw)
In-Reply-To: <20230426085122.376768-3-gilad9366@gmail.com>
On 04/26, Gilad Sever wrote:
> skb->dev always exists in the tc flow. There is no need to use
> bpf_skc_lookup(), bpf_sk_lookup() from this code path.
>
> This change facilitates fixing the tc flow to be VRF aware.
>
> Reviewed-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
> Reviewed-by: Eyal Birger <eyal.birger@gmail.com>
> Signed-off-by: Gilad Sever <gilad9366@gmail.com>
Acked-by: Stanislav Fomichev <sdf@google.com>
> ---
> net/core/filter.c | 24 ++++++++++++++++++------
> 1 file changed, 18 insertions(+), 6 deletions(-)
>
> diff --git a/net/core/filter.c b/net/core/filter.c
> index 5910956f4e0d..f43f86fc1235 100644
> --- a/net/core/filter.c
> +++ b/net/core/filter.c
> @@ -6704,8 +6704,12 @@ static const struct bpf_func_proto bpf_sk_lookup_udp_proto = {
> BPF_CALL_5(bpf_tc_skc_lookup_tcp, struct sk_buff *, skb,
> struct bpf_sock_tuple *, tuple, u32, len, u64, netns_id, u64, flags)
> {
> - return (unsigned long)bpf_skc_lookup(skb, tuple, len, IPPROTO_TCP,
> - netns_id, flags);
> + struct net *caller_net = dev_net(skb->dev);
> + int ifindex = skb->dev->ifindex;
> +
> + return (unsigned long)__bpf_skc_lookup(skb, tuple, len, caller_net,
> + ifindex, IPPROTO_TCP, netns_id,
> + flags);
> }
>
> static const struct bpf_func_proto bpf_tc_skc_lookup_tcp_proto = {
> @@ -6723,8 +6727,12 @@ static const struct bpf_func_proto bpf_tc_skc_lookup_tcp_proto = {
> BPF_CALL_5(bpf_tc_sk_lookup_tcp, struct sk_buff *, skb,
> struct bpf_sock_tuple *, tuple, u32, len, u64, netns_id, u64, flags)
> {
> - return (unsigned long)bpf_sk_lookup(skb, tuple, len, IPPROTO_TCP,
> - netns_id, flags);
> + struct net *caller_net = dev_net(skb->dev);
> + int ifindex = skb->dev->ifindex;
> +
> + return (unsigned long)__bpf_sk_lookup(skb, tuple, len, caller_net,
> + ifindex, IPPROTO_TCP, netns_id,
> + flags);
> }
>
> static const struct bpf_func_proto bpf_tc_sk_lookup_tcp_proto = {
> @@ -6742,8 +6750,12 @@ static const struct bpf_func_proto bpf_tc_sk_lookup_tcp_proto = {
> BPF_CALL_5(bpf_tc_sk_lookup_udp, struct sk_buff *, skb,
> struct bpf_sock_tuple *, tuple, u32, len, u64, netns_id, u64, flags)
> {
> - return (unsigned long)bpf_sk_lookup(skb, tuple, len, IPPROTO_UDP,
> - netns_id, flags);
> + struct net *caller_net = dev_net(skb->dev);
> + int ifindex = skb->dev->ifindex;
> +
> + return (unsigned long)__bpf_sk_lookup(skb, tuple, len, caller_net,
> + ifindex, IPPROTO_UDP, netns_id,
> + flags);
> }
>
> static const struct bpf_func_proto bpf_tc_sk_lookup_udp_proto = {
> --
> 2.34.1
>
next prev parent reply other threads:[~2023-04-27 18:03 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-26 8:51 [PATCH bpf,v3 0/4] Socket lookup BPF API from tc/xdp ingress does not respect VRF bindings Gilad Sever
2023-04-26 8:51 ` [PATCH bpf,v3 1/4] bpf: factor out socket lookup functions for the TC hookpoint Gilad Sever
2023-04-27 18:03 ` Stanislav Fomichev
2023-04-26 8:51 ` [PATCH bpf,v3 2/4] bpf: Call __bpf_sk_lookup()/__bpf_skc_lookup() directly via " Gilad Sever
2023-04-27 18:03 ` Stanislav Fomichev [this message]
2023-04-26 8:51 ` [PATCH bpf,v3 3/4] bpf: fix bpf socket lookup from tc/xdp to respect socket VRF bindings Gilad Sever
2023-04-27 18:03 ` Stanislav Fomichev
2023-04-26 8:51 ` [PATCH bpf,v3 4/4] selftests/bpf: Add vrf_socket_lookup tests Gilad Sever
2023-04-27 17:31 ` Stanislav Fomichev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZEq4/JAgLRCKEeQr@google.com \
--to=sdf@google.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=eyal.birger@gmail.com \
--cc=gilad9366@gmail.com \
--cc=haoluo@google.com \
--cc=hawk@kernel.org \
--cc=joe@wand.net.nz \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kpsingh@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=mykolal@fb.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shmulik.ladkani@gmail.com \
--cc=shuah@kernel.org \
--cc=song@kernel.org \
--cc=yhs@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.