1 // SPDX-License-Identifier: GPL-2.0
3 #include <bpf/bpf_helpers.h>
6 int classifier_0(struct __sk_buff *skb);
7 int classifier_1(struct __sk_buff *skb);
10 __uint(type, BPF_MAP_TYPE_PROG_ARRAY);
11 __uint(max_entries, 2);
12 __uint(key_size, sizeof(__u32));
13 __array(values, void (void));
14 } jmp_table SEC(".maps") = {
16 [0] = (void *) &classifier_0,
17 [1] = (void *) &classifier_1,
25 int subprog_tail0(struct __sk_buff *skb)
27 bpf_tail_call_static(skb, &jmp_table, 0);
33 int classifier_0(struct __sk_buff *skb)
41 int subprog_tail1(struct __sk_buff *skb)
43 bpf_tail_call_static(skb, &jmp_table, 1);
49 int classifier_1(struct __sk_buff *skb)
59 int tailcall_bpf2bpf_hierarchy_2(struct __sk_buff *skb)
67 return (count1 << 16) | count0;
70 char __license[] SEC("license") = "GPL";