• Home
Name Date Size #Lines LOC

..--

.gitignoreD08-May-2024643 5251

MakefileD08-May-20249.9 KiB297253

README.rstD08-May-20242.3 KiB7753

asm_goto_workaround.hD08-May-2024725 2913

bpf_insn.hD08-May-20245.4 KiB218157

bpf_load.cD08-May-202416.3 KiB688550

bpf_load.hD08-May-20241.6 KiB5933

cookie_uid_helper_example.cD08-May-20249.2 KiB324236

cpustat_kern.cD08-May-20247 KiB282141

cpustat_user.cD08-May-20244.7 KiB220152

do_hbm_test.shD08-May-202412.1 KiB443397

fds_example.cD08-May-20244.2 KiB193163

hash_func01.hD08-May-20241.3 KiB5639

hbm.cD08-May-202413.2 KiB499401

hbm.hD08-May-20241.2 KiB3926

hbm_edt_kern.cD08-May-20245.3 KiB16984

hbm_kern.hD08-May-20245.9 KiB221187

hbm_out_kern.cD08-May-20245.5 KiB18094

ibumad_kern.cD08-May-20243 KiB139100

ibumad_user.cD08-May-20242.5 KiB12391

lathist_kern.cD08-May-20242.1 KiB10068

lathist_user.cD08-May-20241.8 KiB10175

lwt_len_hist.shD08-May-2024956 3929

lwt_len_hist_kern.cD08-May-20241.8 KiB8359

lwt_len_hist_user.cD08-May-20241.7 KiB8061

map_perf_test_kern.cD08-May-20246.1 KiB284232

map_perf_test_user.cD08-May-202410.4 KiB462375

offwaketime_kern.cD08-May-20243.5 KiB152118

offwaketime_user.cD08-May-20242.4 KiB125102

parse_ldabs.cD08-May-20241.2 KiB4332

parse_simple.cD08-May-20241.3 KiB5036

parse_varlen.cD08-May-20243.4 KiB151122

run_cookie_uid_helper_example.shD08-May-2024341 1611

sampleip_kern.cD08-May-2024924 3926

sampleip_user.cD08-May-20244.2 KiB201158

sock_example.cD08-May-20242.9 KiB10774

sock_example.hD08-May-2024814 3630

sock_flags_kern.cD08-May-20241.2 KiB5034

sockex1_kern.cD08-May-2024633 3024

sockex1_user.cD08-May-20241.1 KiB5540

sockex2_kern.cD08-May-20244.7 KiB223189

sockex2_user.cD08-May-20241.2 KiB5846

sockex3_kern.cD08-May-20246.1 KiB291226

sockex3_user.cD08-May-20241.9 KiB8570

spintest_kern.cD08-May-20242.1 KiB6955

spintest_user.cD08-May-20241.2 KiB5849

syscall_nrs.cD08-May-2024337 2015

syscall_tp_kern.cD08-May-20241.4 KiB7460

syscall_tp_user.cD08-May-20242.4 KiB10982

task_fd_query_kern.cD08-May-2024412 2016

task_fd_query_user.cD08-May-202410.5 KiB384325

tc_l2_redirect.shD08-May-20244.9 KiB175135

tc_l2_redirect_kern.cD08-May-20246 KiB238182

tc_l2_redirect_user.cD08-May-20241.3 KiB7156

tcbpf1_kern.cD08-May-20242.5 KiB9175

tcp_basertt_kern.cD08-May-20241.7 KiB7249

tcp_bpf.readmeD08-May-20241.1 KiB2921

tcp_bufs_kern.cD08-May-20242.1 KiB8252

tcp_clamp_kern.cD08-May-20242.7 KiB9868

tcp_cong_kern.cD08-May-20241.9 KiB7953

tcp_dumpstats_kern.cD08-May-20241.3 KiB6951

tcp_iw_kern.cD08-May-20242.2 KiB8455

tcp_rwnd_kern.cD08-May-20241.7 KiB6536

tcp_synrto_kern.cD08-May-20241.7 KiB6536

tcp_tos_reflect_kern.cD08-May-20241.8 KiB8167

test_cgrp2_array_pin.cD08-May-20242.1 KiB10791

test_cgrp2_attach.cD08-May-20244.6 KiB173126

test_cgrp2_sock.cD08-May-20246.2 KiB291224

test_cgrp2_sock.shD08-May-20242.9 KiB13686

test_cgrp2_sock2.cD08-May-20241.4 KiB6947

test_cgrp2_sock2.shD08-May-20241.5 KiB8665

test_cgrp2_tc.shD08-May-20244.2 KiB186158

test_cgrp2_tc_kern.cD08-May-20241.8 KiB7155

test_cls_bpf.shD08-May-2024915 3931

test_current_task_under_cgroup_kern.cD08-May-20241.1 KiB4429

test_current_task_under_cgroup_user.cD08-May-20241.5 KiB8255

test_ipip.shD08-May-20245.6 KiB180147

test_lru_dist.cD08-May-202412 KiB541421

test_lwt_bpf.cD08-May-20246 KiB254194

test_lwt_bpf.shD08-May-20249 KiB401348

test_map_in_map_kern.cD08-May-20243.8 KiB174128

test_map_in_map_user.cD08-May-20243 KiB13198

test_overhead_kprobe_kern.cD08-May-20241 KiB4229

test_overhead_raw_tp_kern.cD08-May-2024357 1813

test_overhead_tp_kern.cD08-May-2024828 3726

test_overhead_user.cD08-May-20243.6 KiB183157

test_override_return.shD08-May-2024263 1613

test_probe_write_user_kern.cD08-May-20241.6 KiB5332

test_probe_write_user_user.cD08-May-20242.5 KiB8060

trace_event_kern.cD08-May-20242.3 KiB8062

trace_event_user.cD08-May-20246.9 KiB311256

trace_output_kern.cD08-May-2024609 3124

trace_output_user.cD08-May-20241.7 KiB8973

tracex1_kern.cD08-May-20241.4 KiB4925

tracex1_user.cD08-May-2024440 2719

tracex2_kern.cD08-May-20242.3 KiB10176

tracex2_user.cD08-May-20243.3 KiB161132

tracex3_kern.cD08-May-20242.1 KiB9058

tracex3_user.cD08-May-20243.1 KiB162137

tracex4_kern.cD08-May-20241.2 KiB5536

tracex4_user.cD08-May-20241.5 KiB7557

tracex5_kern.cD08-May-20242.2 KiB9369

tracex5_user.cD08-May-20241.1 KiB5138

tracex6_kern.cD08-May-20241.5 KiB6857

tracex6_user.cD08-May-20244.6 KiB190162

tracex7_kern.cD08-May-2024335 1713

tracex7_user.cD08-May-2024484 2922

xdp1_kern.cD08-May-20242 KiB9472

xdp1_user.cD08-May-20243.3 KiB165135

xdp2_kern.cD08-May-20242.4 KiB11590

xdp2skb_meta.shD08-May-20244.5 KiB221168

xdp2skb_meta_kern.cD08-May-20243 KiB10636

xdp_adjust_tail_kern.cD08-May-20243.7 KiB153119

xdp_adjust_tail_user.cD08-May-20244.2 KiB185149

xdp_fwd_kern.cD08-May-20244.5 KiB15998

xdp_fwd_user.cD08-May-20243.5 KiB160120

xdp_monitor_kern.cD08-May-20246.7 KiB260184

xdp_monitor_user.cD08-May-202417.1 KiB716572

xdp_redirect_cpu_kern.cD08-May-202416.9 KiB722540

xdp_redirect_cpu_user.cD08-May-202419.3 KiB776632

xdp_redirect_kern.cD08-May-20242.1 KiB9164

xdp_redirect_map_kern.cD08-May-20242.2 KiB9362

xdp_redirect_map_user.cD08-May-20245.3 KiB220181

xdp_redirect_user.cD08-May-20245.3 KiB221181

xdp_router_ipv4_kern.cD08-May-20244.4 KiB187151

xdp_router_ipv4_user.cD08-May-202418.4 KiB739661

xdp_rxq_info_kern.cD08-May-20243.2 KiB14194

xdp_rxq_info_user.cD08-May-202414 KiB609507

xdp_sample_pkts_kern.cD08-May-20241.6 KiB6038

xdp_sample_pkts_user.cD08-May-20244 KiB198167

xdp_tx_iptunnel_common.hD08-May-2024485 3526

xdp_tx_iptunnel_kern.cD08-May-20245.6 KiB238180

xdp_tx_iptunnel_user.cD08-May-20247.4 KiB312267

xdpsock_user.cD08-May-202418 KiB787652

README.rst

1eBPF sample programs
2====================
3
4This directory contains a test stubs, verifier test-suite and examples
5for using eBPF. The examples use libbpf from tools/lib/bpf.
6
7Build dependencies
8==================
9
10Compiling requires having installed:
11 * clang >= version 3.4.0
12 * llvm >= version 3.7.1
13
14Note that LLVM's tool 'llc' must support target 'bpf', list version
15and supported targets with command: ``llc --version``
16
17Kernel headers
18--------------
19
20There are usually dependencies to header files of the current kernel.
21To avoid installing devel kernel headers system wide, as a normal
22user, simply call::
23
24 make headers_install
25
26This will creates a local "usr/include" directory in the git/build top
27level directory, that the make system automatically pickup first.
28
29Compiling
30=========
31
32For building the BPF samples, issue the below command from the kernel
33top level directory::
34
35 make samples/bpf/
36
37Do notice the "/" slash after the directory name.
38
39It is also possible to call make from this directory.  This will just
40hide the the invocation of make as above with the appended "/".
41
42Manually compiling LLVM with 'bpf' support
43------------------------------------------
44
45Since version 3.7.0, LLVM adds a proper LLVM backend target for the
46BPF bytecode architecture.
47
48By default llvm will build all non-experimental backends including bpf.
49To generate a smaller llc binary one can use::
50
51 -DLLVM_TARGETS_TO_BUILD="BPF"
52
53Quick sniplet for manually compiling LLVM and clang
54(build dependencies are cmake and gcc-c++)::
55
56 $ git clone http://llvm.org/git/llvm.git
57 $ cd llvm/tools
58 $ git clone --depth 1 http://llvm.org/git/clang.git
59 $ cd ..; mkdir build; cd build
60 $ cmake .. -DLLVM_TARGETS_TO_BUILD="BPF;X86"
61 $ make -j $(getconf _NPROCESSORS_ONLN)
62
63It is also possible to point make to the newly compiled 'llc' or
64'clang' command via redefining LLC or CLANG on the make command line::
65
66 make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang
67
68Cross compiling samples
69-----------------------
70In order to cross-compile, say for arm64 targets, export CROSS_COMPILE and ARCH
71environment variables before calling make. This will direct make to build
72samples for the cross target.
73
74export ARCH=arm64
75export CROSS_COMPILE="aarch64-linux-gnu-"
76make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang
77

tcp_bpf.readme

1This file describes how to run the tcp_*_kern.o tcp_bpf (or socket_ops)
2programs. These programs attach to a cgroupv2. The following commands create
3a cgroupv2 and attach a bash shell to the group.
4
5  mkdir -p /tmp/cgroupv2
6  mount -t cgroup2 none /tmp/cgroupv2
7  mkdir -p /tmp/cgroupv2/foo
8  bash
9  echo $$ >> /tmp/cgroupv2/foo/cgroup.procs
10
11Anything that runs under this shell belongs to the foo cgroupv2. To load
12(attach) one of the tcp_*_kern.o programs:
13
14  bpftool prog load tcp_basertt_kern.o /sys/fs/bpf/tcp_prog
15  bpftool cgroup attach /tmp/cgroupv2/foo sock_ops pinned /sys/fs/bpf/tcp_prog
16  bpftool prog tracelog
17
18"bpftool prog tracelog" will continue to run printing the BPF log buffer.
19The tcp_*_kern.o programs use special print functions to print logging
20information (if enabled by the ifdef).
21
22If using netperf/netserver to create traffic, you need to run them under the
23cgroupv2 to which the BPF programs are attached (i.e. under bash shell
24attached to the cgroupv2).
25
26To remove (unattach) a socket_ops BPF program from a cgroupv2:
27
28  bpftool cgroup detach /tmp/cgroupv2/foo sock_ops pinned /sys/fs/bpf/tcp_prog
29