Thread (11 messages) flat view 11 messages, 3 authors, 2020-02-25

Re: [PATCH bpf-next 3/4] bpf: INET_DIAG support in bpf_sk_storage

From: Song Liu <song@kernel.org>
Date: 2020-02-25 05:23:23
Also in: bpf

On Fri, Feb 21, 2020 at 10:47 AM Martin KaFai Lau [off-list ref] wrote:
This patch adds INET_DIAG support to bpf_sk_storage.

1. Although this series adds bpf_sk_storage diag capability to inet sk,
   bpf_sk_storage is in general applicable to all fullsock.  Hence, the
   bpf_sk_storage logic will operate on SK_DIAG_* nlattr.  The caller
   will pass in its specific nesting nlattr (e.g. INET_DIAG_*) as
   the argument.

2. The request will be like:
        INET_DIAG_REQ_SK_BPF_STORAGES (nla_nest) (defined in latter patch)
                SK_DIAG_BPF_STORAGE_REQ_MAP_FD (nla_put_u32)
                SK_DIAG_BPF_STORAGE_REQ_MAP_FD (nla_put_u32)
                ......

   Considering there could have multiple bpf_sk_storages in a sk,
   instead of reusing INET_DIAG_INFO ("ss -i"),  the user can select
   some specific bpf_sk_storage to dump by specifying an array of
   SK_DIAG_BPF_STORAGE_REQ_MAP_FD.

   If no SK_DIAG_BPF_STORAGE_REQ_MAP_FD is specified (i.e. an empty
   INET_DIAG_REQ_SK_BPF_STORAGES), it will dump all bpf_sk_storages
   of a sk.

3. The reply will be like:
        INET_DIAG_BPF_SK_STORAGES (nla_nest) (defined in latter patch)
                SK_DIAG_BPF_STORAGE (nla_nest)
                        SK_DIAG_BPF_STORAGE_MAP_ID (nla_put_u32)
                        SK_DIAG_BPF_STORAGE_MAP_VALUE (nla_reserve_64bit)
                SK_DIAG_BPF_STORAGE (nla_nest)
                        SK_DIAG_BPF_STORAGE_MAP_ID (nla_put_u32)
                        SK_DIAG_BPF_STORAGE_MAP_VALUE (nla_reserve_64bit)
                ......

4. Unlike other INET_DIAG info of a sk which is pretty static, the size
   required to dump the bpf_sk_storage(s) of a sk is dynamic as the
   system adding more bpf_sk_storage_map.  It is hard to set a static
   min_dump_alloc size.

   Hence, this series learns it at the runtime and adjust the
   cb->min_dump_alloc as it iterates all sk(s) of a system.  The
   "unsigned int *res_diag_size" in bpf_sk_storage_diag_put()
   is for this purpose.

   The next patch will update the cb->min_dump_alloc as it
   iterates the sk(s).

Signed-off-by: Martin KaFai Lau <redacted>
Acked-by: Song Liu <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help