1// SPDX-License-Identifier: GPL-2.0
2
3#include <linux/bpf.h>
4#include <bpf/bpf_helpers.h>
5#include <linux/if_ether.h>
6#include <linux/ip.h>
7
8/* Dummy prog to test TC-BPF API */
9
10SEC("tc")
11int cls(struct __sk_buff *skb)
12{
13 return 0;
14}
15
16/* Prog to verify tc-bpf without cap_sys_admin and cap_perfmon */
17SEC("tcx/ingress")
18int pkt_ptr(struct __sk_buff *skb)
19{
20 struct iphdr *iph = (void *)(long)skb->data + sizeof(struct ethhdr);
21
22 if ((long)(iph + 1) > (long)skb->data_end)
23 return 1;
24 return 0;
25}
26

source code of linux/tools/testing/selftests/bpf/progs/test_tc_bpf.c