1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2020 Cloudflare */
4 #include "bpf_tracing_net.h"
5 #include <bpf/bpf_helpers.h>
6 #include <bpf/bpf_tracing.h>
9 char _license
[] SEC("license") = "GPL";
12 __uint(type
, BPF_MAP_TYPE_SOCKMAP
);
13 __uint(max_entries
, 64);
16 } sockmap
SEC(".maps");
19 __uint(type
, BPF_MAP_TYPE_SOCKHASH
);
20 __uint(max_entries
, 64);
23 } sockhash
SEC(".maps");
26 __uint(type
, BPF_MAP_TYPE_SOCKHASH
);
27 __uint(max_entries
, 64);
36 int copy(struct bpf_iter__sockmap
*ctx
)
38 struct sock
*sk
= ctx
->sk
;
39 __u32 tmp
, *key
= ctx
->key
;
47 /* We need a temporary buffer on the stack, since the verifier doesn't
48 * let us use the pointer from the context as an argument to the helper.
54 return bpf_map_update_elem(&dst
, &tmp
, sk
, 0) != 0;
57 ret
= bpf_map_delete_elem(&dst
, &tmp
);
58 return ret
&& ret
!= -ENOENT
;