Quentin Deslandes 8740ca9dcd ss: add support for BPF socket-local storage
While sock_diag is able to return BPF socket-local storage in response
to INET_DIAG_REQ_SK_BPF_STORAGES requests, ss doesn't request it.

This change introduces the --bpf-maps and --bpf-map-id= options to request
BPF socket-local storage for all SK_STORAGE maps, or only specific ones.

The bigger part of this change will check the requested map IDs and
ensure they are valid. The column COL_EXT is used to print the
socket-local data into.

When --bpf-maps is used, ss will send an empty
INET_DIAG_REQ_SK_BPF_STORAGES request, in return the kernel will send
all the BPF socket-local storage entries for a given socket. The BTF
data for each map is loaded on demand, as ss can't predict which map ID
are used.

When --bpf-map-id=ID is used, a file descriptor to the requested maps is
open to 1) ensure the map doesn't disappear before the data is printed,
and 2) ensure the map type is BPF_MAP_TYPE_SK_STORAGE. The BTF data for
each requested map is loaded before the request is sent to the kernel.

Co-developed-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Quentin Deslandes <qde@naccy.de>
Signed-off-by: David Ahern <dsahern@kernel.org>
2024-02-26 16:05:47 +00:00
..
2020-01-20 09:43:22 -08:00
2023-01-14 09:00:34 -08:00
2024-02-18 17:44:36 +00:00
2023-01-14 09:00:34 -08:00
2020-08-03 10:02:47 -07:00
2020-05-13 14:28:38 +00:00
2023-05-13 19:02:41 -07:00
2023-01-14 09:00:34 -08:00
2023-01-14 09:00:34 -08:00
2023-01-14 09:00:34 -08:00
2023-01-14 09:00:34 -08:00