brintos

brintos / linux-shallow public Read only

0
0
Text · 841 B · 4a9f63b Raw
46 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <linux/bpf.h>3#include <bpf/bpf_helpers.h>4#include "bpf_misc.h"5 6#define __unused __attribute__((unused))7 8struct {9	__uint(type, BPF_MAP_TYPE_PROG_ARRAY);10	__uint(max_entries, 1);11	__uint(key_size, sizeof(__u32));12	__uint(value_size, sizeof(__u32));13} jmp_table SEC(".maps");14 15int done = 0;16 17SEC("tc")18int classifier_0(struct __sk_buff *skb __unused)19{20	done = 1;21	return 0;22}23 24static __noinline25int subprog_tail(struct __sk_buff *skb)26{27	/* Don't propagate the constant to the caller */28	volatile int ret = 1;29 30	bpf_tail_call_static(skb, &jmp_table, 0);31	return ret;32}33 34SEC("tc")35int entry(struct __sk_buff *skb)36{37	/* Have data on stack which size is not a multiple of 8 */38	volatile char arr[1] = {};39 40	__sink(arr[0]);41 42	return subprog_tail(skb);43}44 45char __license[] SEC("license") = "GPL";46