xref: /linux/tools/testing/selftests/bpf/progs/changes_pkt_data.c (revision 35f301dd4551fa731db4834f915e8351838f6f19)
1 // SPDX-License-Identifier: GPL-2.0
2 
3 #include <linux/bpf.h>
4 #include <bpf/bpf_helpers.h>
5 
6 __noinline
changes_pkt_data(struct __sk_buff * sk)7 long changes_pkt_data(struct __sk_buff *sk)
8 {
9 	return bpf_skb_pull_data(sk, 0);
10 }
11 
12 __noinline __weak
does_not_change_pkt_data(struct __sk_buff * sk)13 long does_not_change_pkt_data(struct __sk_buff *sk)
14 {
15 	return 0;
16 }
17 
18 SEC("?tc")
main_with_subprogs(struct __sk_buff * sk)19 int main_with_subprogs(struct __sk_buff *sk)
20 {
21 	changes_pkt_data(sk);
22 	does_not_change_pkt_data(sk);
23 	return 0;
24 }
25 
26 SEC("?tc")
main_changes(struct __sk_buff * sk)27 int main_changes(struct __sk_buff *sk)
28 {
29 	bpf_skb_pull_data(sk, 0);
30 	return 0;
31 }
32 
33 SEC("?tc")
main_does_not_change(struct __sk_buff * sk)34 int main_does_not_change(struct __sk_buff *sk)
35 {
36 	return 0;
37 }
38 
39 char _license[] SEC("license") = "GPL";
40