From: Daniel Borkmann <daniel@iogearbox.net>
To: Anton Ivanov <anton.ivanov@kot-begemot.co.uk>,
Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: bpf <bpf@vger.kernel.org>
Subject: Re: Access to a BPF map from a module
Date: Wed, 7 Jul 2021 17:21:07 +0200 [thread overview]
Message-ID: <8960fc66-dd4b-7191-d123-2536468fa406@iogearbox.net> (raw)
In-Reply-To: <a710b903-aaa5-8bd3-3cb0-14e08f9dbed3@kot-begemot.co.uk>
On 7/7/21 9:09 AM, Anton Ivanov wrote:
> On 07/07/2021 01:53, Alexei Starovoitov wrote:
>> On Mon, Jul 5, 2021 at 9:00 AM Anton Ivanov
>> <anton.ivanov@kot-begemot.co.uk> wrote:
>>> Hi List,
>>>
>>> I have the following problem.
>>>
>>> I want to perform some operations on a bpf map from a loadable module. The map is instantiated elsewhere and pinned.
>>>
>>> How do I go about to obtain the map inside the module?
>>>
>>> bpf_map_get* functions are not exported at present so they are not available. Is there another way besides them to fetch a bpf map "by fs name" in a kernel module?
>>>
>>> If the access limitation is intentional, may I ask what is the actual rationale behind this decision?
>> BPF objects (like maps) and BPF infra are not extensible or accessible
>> from modules.
>
> Programs are.
>
> You can grab a program using bpf_prog_get_type_path and use it. It is an exported symbol.
Right, sadly for the netfilter xt_bpf hack as the only user. :/ The typical way to
retrieve would be to get the program via bpf_prog_get_type() from modules.
> The only thing missing is an equivalent of bpf_prog_get_type_path for maps, let's say bpf_map_get_path
>
> In fact, I already have a patch for that too. I wanted to understand the rationale behind the restriction before submitting it.
There is a bpf_map_get(), out of curiosity, why do you need a path variant specifically?
>> That is intentional to make sure that BPF development stays on the public
>> mailing list and within the kernel.
>> If you could describe your use case we hopefully will be able to come
>> up with upstreamable
>
> Build a switchdev switch to be used in conjunction with the normal kernel bridge/routing infra which uses BPF "firmware"
>
> Rationale:
>
> 1. So people can play with switchdev and smartnics in general without having esoteric hardware
>
> 2. So people can play with these both on the kernel side and on the "guts/internals" side.
Wouldn't it be enough to load the BPF "firmware" for that switchdev in kernel via regular
prog fd, meaning similar to what we do with tc BPF case today? From a higher level it
sounds like the same use case as tc BPF just that its 'internal' to the switchdev.
>> alternative to your proprietary module.
> I intend to upstream it. In fact the WIP is already on github.
Thanks,
Daniel
next prev parent reply other threads:[~2021-07-07 15:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-05 15:59 Access to a BPF map from a module Anton Ivanov
2021-07-07 0:53 ` Alexei Starovoitov
2021-07-07 7:09 ` Anton Ivanov
2021-07-07 15:21 ` Daniel Borkmann [this message]
2021-07-07 15:31 ` Anton Ivanov
2021-07-07 15:37 ` Anton Ivanov
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=8960fc66-dd4b-7191-d123-2536468fa406@iogearbox.net \
--to=daniel@iogearbox.net \
--cc=alexei.starovoitov@gmail.com \
--cc=anton.ivanov@kot-begemot.co.uk \
--cc=bpf@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).