17bd1590dSMartin KaFai Lau // SPDX-License-Identifier: GPL-2.0 27bd1590dSMartin KaFai Lau /* Copyright (c) 2021 Facebook */ 3*8e9af821SJiri Olsa #include "../bpf_testmod/bpf_testmod_kfunc.h" 47bd1590dSMartin KaFai Lau 57bd1590dSMartin KaFai Lau extern const int bpf_prog_active __ksym; 67bd1590dSMartin KaFai Lau int active_res = -1; 7700dcf0fSMartin KaFai Lau int sk_state_res = -1; 87bd1590dSMartin KaFai Lau f1(struct __sk_buff * skb)97bd1590dSMartin KaFai Lauint __noinline f1(struct __sk_buff *skb) 107bd1590dSMartin KaFai Lau { 117bd1590dSMartin KaFai Lau struct bpf_sock *sk = skb->sk; 127bd1590dSMartin KaFai Lau int *active; 137bd1590dSMartin KaFai Lau 147bd1590dSMartin KaFai Lau if (!sk) 157bd1590dSMartin KaFai Lau return -1; 167bd1590dSMartin KaFai Lau 177bd1590dSMartin KaFai Lau sk = bpf_sk_fullsock(sk); 187bd1590dSMartin KaFai Lau if (!sk) 197bd1590dSMartin KaFai Lau return -1; 207bd1590dSMartin KaFai Lau 217bd1590dSMartin KaFai Lau active = (int *)bpf_per_cpu_ptr(&bpf_prog_active, 227bd1590dSMartin KaFai Lau bpf_get_smp_processor_id()); 237bd1590dSMartin KaFai Lau if (active) 247bd1590dSMartin KaFai Lau active_res = *active; 257bd1590dSMartin KaFai Lau 26*8e9af821SJiri Olsa sk_state_res = bpf_kfunc_call_test3((struct sock *)sk)->__sk_common.skc_state; 277bd1590dSMartin KaFai Lau 287bd1590dSMartin KaFai Lau return (__u32)bpf_kfunc_call_test1((struct sock *)sk, 1, 2, 3, 4); 297bd1590dSMartin KaFai Lau } 307bd1590dSMartin KaFai Lau 31c22bdd28SAndrii Nakryiko SEC("tc") kfunc_call_test1(struct __sk_buff * skb)327bd1590dSMartin KaFai Lauint kfunc_call_test1(struct __sk_buff *skb) 337bd1590dSMartin KaFai Lau { 347bd1590dSMartin KaFai Lau return f1(skb); 357bd1590dSMartin KaFai Lau } 367bd1590dSMartin KaFai Lau 377bd1590dSMartin KaFai Lau char _license[] SEC("license") = "GPL"; 38