1 // SPDX-License-Identifier: GPL-2.0
3 #include <bpf/bpf_tracing.h>
4 #include <bpf/bpf_helpers.h>
6 char _license
[] SEC("license") = "GPL";
9 /* Structure does not need to contain all entries,
10 * as "preserve_access_index" will use BTF to fix this...
13 } __attribute__((preserve_access_index
));
16 /* Structure does not need to contain all entries,
17 * as "preserve_access_index" will use BTF to fix this...
19 struct net_device
*dev
;
21 } __attribute__((preserve_access_index
));
27 void *data_hard_start
;
29 struct xdp_rxq_info
*rxq
;
30 } __attribute__((preserve_access_index
));
38 __uint(type
, BPF_MAP_TYPE_PERF_EVENT_ARRAY
);
39 __uint(key_size
, sizeof(int));
40 __uint(value_size
, sizeof(int));
41 } perf_buf_map
SEC(".maps");
43 __u64 test_result_fentry
= 0;
45 int BPF_PROG(trace_on_entry
, struct xdp_buff
*xdp
)
48 void *data_end
= (void *)(long)xdp
->data_end
;
49 void *data
= (void *)(long)xdp
->data
;
51 meta
.ifindex
= xdp
->rxq
->dev
->ifindex
;
52 meta
.pkt_len
= data_end
- data
;
53 bpf_xdp_output(xdp
, &perf_buf_map
,
54 ((__u64
) meta
.pkt_len
<< 32) |
58 test_result_fentry
= xdp
->rxq
->dev
->ifindex
;
62 __u64 test_result_fexit
= 0;
64 int BPF_PROG(trace_on_exit
, struct xdp_buff
*xdp
, int ret
)
66 test_result_fexit
= ret
;