Home | History | Annotate | Download | only in bpf
      1 /* SPDX-License-Identifier: GPL-2.0 */
      2 /* Copyright (c) 2018 Facebook */
      3 #include <linux/bpf.h>
      4 #include "bpf_helpers.h"
      5 
      6 int _version SEC("version") = 1;
      7 
      8 struct ipv_counts {
      9 	unsigned int v4;
     10 	unsigned int v6;
     11 };
     12 
     13 struct bpf_map_def SEC("maps") btf_map = {
     14 	.type = BPF_MAP_TYPE_ARRAY,
     15 	.key_size = sizeof(int),
     16 	.value_size = sizeof(struct ipv_counts),
     17 	.max_entries = 4,
     18 };
     19 
     20 BPF_ANNOTATE_KV_PAIR(btf_map, int, struct ipv_counts);
     21 
     22 struct dummy_tracepoint_args {
     23 	unsigned long long pad;
     24 	struct sock *sock;
     25 };
     26 
     27 SEC("dummy_tracepoint")
     28 int _dummy_tracepoint(struct dummy_tracepoint_args *arg)
     29 {
     30 	struct ipv_counts *counts;
     31 	int key = 0;
     32 
     33 	if (!arg->sock)
     34 		return 0;
     35 
     36 	counts = bpf_map_lookup_elem(&btf_map, &key);
     37 	if (!counts)
     38 		return 0;
     39 
     40 	counts->v6++;
     41 
     42 	return 0;
     43 }
     44 
     45 char _license[] SEC("license") = "GPL";
     46