1 // SPDX-License-Identifier: GPL-2.0
3 #include <bpf/bpf_helpers.h>
6 int classifier_0(struct __sk_buff *skb);
9 __uint(type, BPF_MAP_TYPE_PROG_ARRAY);
10 __uint(max_entries, 1);
11 __uint(key_size, sizeof(__u32));
12 __array(values, void (void));
13 } jmp_table0 SEC(".maps") = {
15 [0] = (void *) &classifier_0,
20 __uint(type, BPF_MAP_TYPE_PROG_ARRAY);
21 __uint(max_entries, 1);
22 __uint(key_size, sizeof(__u32));
23 __array(values, void (void));
24 } jmp_table1 SEC(".maps") = {
26 [0] = (void *) &classifier_0,
33 int subprog_tail(struct __sk_buff *skb, void *jmp_table)
35 bpf_tail_call_static(skb, jmp_table, 0);
41 int classifier_0(struct __sk_buff *skb)
44 subprog_tail(skb, &jmp_table0);
45 subprog_tail(skb, &jmp_table1);
52 int tailcall_bpf2bpf_hierarchy_3(struct __sk_buff *skb)
56 bpf_tail_call_static(skb, &jmp_table0, 0);
62 char __license[] SEC("license") = "GPL";