1  // SPDX-License-Identifier: GPL-2.0
2  /* Copyright (c) 2021 Facebook */
3  #include "../bpf_testmod/bpf_testmod_kfunc.h"
4  
5  extern const int bpf_prog_active __ksym;
6  int active_res = -1;
7  int sk_state_res = -1;
8  
f1(struct __sk_buff * skb)9  int __noinline f1(struct __sk_buff *skb)
10  {
11  	struct bpf_sock *sk = skb->sk;
12  	int *active;
13  
14  	if (!sk)
15  		return -1;
16  
17  	sk = bpf_sk_fullsock(sk);
18  	if (!sk)
19  		return -1;
20  
21  	active = (int *)bpf_per_cpu_ptr(&bpf_prog_active,
22  					bpf_get_smp_processor_id());
23  	if (active)
24  		active_res = *active;
25  
26  	sk_state_res = bpf_kfunc_call_test3((struct sock *)sk)->__sk_common.skc_state;
27  
28  	return (__u32)bpf_kfunc_call_test1((struct sock *)sk, 1, 2, 3, 4);
29  }
30  
31  SEC("tc")
kfunc_call_test1(struct __sk_buff * skb)32  int kfunc_call_test1(struct __sk_buff *skb)
33  {
34  	return f1(skb);
35  }
36  
37  char _license[] SEC("license") = "GPL";
38