Thread (8 messages) 8 messages, 2 authors, 2024-02-21

Re: [PATCH iproute2 v8 1/3] ss: add support for BPF socket-local storage

From: Quentin Deslandes <hidden>
Date: 2024-02-21 09:51:51

On 2024-02-18 18:39, David Ahern wrote:
On 2/14/24 1:42 AM, Quentin Deslandes wrote:
quoted
+	if (info.type != BPF_MAP_TYPE_SK_STORAGE) {
+		fprintf(stderr, "ss: BPF map with ID %s has type '%s', expecting 'sk_storage'\n",
+			optarg, libbpf_bpf_map_type_str(info.type));
+		close(fd);
+		return -1;
+	}
ss.c: In function ‘bpf_map_opts_load_info’:
ss.c:3448:33: warning: implicit declaration of function
‘libbpf_bpf_map_type_str’ [-Wimplicit-function-declaration]
 3448 |                         optarg, libbpf_bpf_map_type_str(info.type));
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~
ss.c:3447:68: warning: format ‘%s’ expects argument of type ‘char *’,
but argument 4 has type ‘int’ [-Wformat=]
 3447 |                 fprintf(stderr, "ss: BPF map with ID %s has type
'%s', expecting 'sk_storage'\n",
      |                                                                   ~^
      |                                                                    |
      |
  char *
      |                                                                   %d
 3448 |                         optarg, libbpf_bpf_map_type_str(info.type));
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                 |
      |                                 int
    CC       lnstat_util.o
    LINK     lnstat
    LINK     ss
/usr/bin/ld: ss.o: in function `main':


Ubuntu 22.04 has libbpf-0.5 installed. I suspect version hook is needed.
e.g., something like this (but with the relevant version numbers):

#if (LIBBPF_MAJOR_VERSION > 0) || (LIBBPF_MINOR_VERSION >= 7)
After checking, all the libbpf symbols I use require at least libbpf-0.5, except
for this one which was introduced in libbpf-1.0. Hence, I will print the type ID
instead of the string. IMO printing the string representation of the type doesn't
add enough value to justify adding a version hook.

However, I see the minimum required version for libbpf is 0.1, but this
series requires 0.5. I would check the version in ss and #error if
the requirements are not met, but I'm not sure this is the right way to do it.
What do you think?

Regards,
Quentin Deslandes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help